@agenticprimitives/ontology 1.0.0-alpha.37 → 1.0.0-alpha.38

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.
@@ -13,6 +13,7 @@
13
13
  @prefix aporg: <https://agenticprimitives.dev/ns/org#> .
14
14
  @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
15
15
  @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
16
+ @prefix appc: <https://agenticprimitives.dev/ns/privacy-credential#> .
16
17
 
17
18
  # ─── agentKind — 3 values, on-chain-bound (ADR-0009 enum / types.AgentType) ──
18
19
  ap:agentKind a skos:ConceptScheme ;
@@ -223,3 +224,54 @@ ap:ConfigurationDigestRole a skos:Concept ; skos:inScheme ap:digestRoleSch
223
224
  ap:ArtifactDigestRole a skos:Concept ; skos:inScheme ap:digestRoleScheme ; skos:prefLabel "artifact" ; rdfs:seeAlso ap:hasArtifactDigest .
224
225
  ap:CanonicalProfileDigestRole a skos:Concept ; skos:inScheme ap:digestRoleScheme ; skos:prefLabel "canonical-profile" ; rdfs:seeAlso ap:hasCanonicalProfileDigest .
225
226
  ap:SelectedCardDigestRole a skos:Concept ; skos:inScheme ap:digestRoleScheme ; skos:prefLabel "selected-card" ; rdfs:seeAlso ap:hasSelectedCardDigest .
227
+
228
+ # ─── Anonymous credentials (tbox/privacy-credential.ttl; specs 304 / 305 / 442 §7.2 / 443 W5) ───────────────
229
+ # Suites and grades are CODELISTS here so no product name enters the T-box; the proving system behind a suite is
230
+ # informative and lives in the package that binds it (spec 414 doctrine).
231
+ appc:presentationSuiteScheme a skos:ConceptScheme ;
232
+ rdfs:label "presentationSuite" ;
233
+ rdfs:comment "ONE suite per request (ADR-0013). `openac-sd-jwt-p256` proves predicates in zero knowledge over the same container `es256-sd-jwt` discloses from; `bbs-bls12381-g2` is reserved." ;
234
+ skos:hasTopConcept appc:SuiteEs256SdJwt, appc:SuiteOpenAcSdJwtP256, appc:SuiteBbsBls12381G2 .
235
+ appc:SuiteEs256SdJwt a skos:Concept ; skos:inScheme appc:presentationSuiteScheme ; skos:prefLabel "es256-sd-jwt" .
236
+ appc:SuiteOpenAcSdJwtP256 a skos:Concept ; skos:inScheme appc:presentationSuiteScheme ; skos:prefLabel "openac-sd-jwt-p256" .
237
+ appc:SuiteBbsBls12381G2 a skos:Concept ; skos:inScheme appc:presentationSuiteScheme ; skos:prefLabel "bbs-bls12381-g2" ; skos:note "reserved" .
238
+
239
+ appc:issuerKeySuiteScheme a skos:ConceptScheme ;
240
+ rdfs:label "issuerKeySuite" ;
241
+ rdfs:comment "One suite per facet (INV-304-3)." ;
242
+ skos:hasTopConcept appc:IssuerSuiteEs256SdJwt, appc:IssuerSuiteBbsBls12381G2, appc:IssuerSuiteEd25519Di, appc:IssuerSuiteAnoncredsCl .
243
+ appc:IssuerSuiteEs256SdJwt a skos:Concept ; skos:inScheme appc:issuerKeySuiteScheme ; skos:prefLabel "es256-sd-jwt" .
244
+ appc:IssuerSuiteBbsBls12381G2 a skos:Concept ; skos:inScheme appc:issuerKeySuiteScheme ; skos:prefLabel "bbs-bls12381-g2" .
245
+ appc:IssuerSuiteEd25519Di a skos:Concept ; skos:inScheme appc:issuerKeySuiteScheme ; skos:prefLabel "ed25519-di" .
246
+ appc:IssuerSuiteAnoncredsCl a skos:Concept ; skos:inScheme appc:issuerKeySuiteScheme ; skos:prefLabel "anoncreds-cl" .
247
+
248
+ appc:nullifierGradeScheme a skos:ConceptScheme ;
249
+ rdfs:label "nullifierGrade" ;
250
+ rdfs:comment "Ordered low→high: asserted (honest-holder-exact; nothing about its derivation is checked) < in-circuit (proved inside the presentation; reserved until the profile emits it)." ;
251
+ skos:hasTopConcept appc:NullifierAsserted, appc:NullifierInCircuit .
252
+ appc:NullifierAsserted a skos:Concept ; skos:inScheme appc:nullifierGradeScheme ; skos:prefLabel "asserted" ; skos:notation "0" .
253
+ appc:NullifierInCircuit a skos:Concept ; skos:inScheme appc:nullifierGradeScheme ; skos:prefLabel "in-circuit" ; skos:notation "1" ; skos:broader appc:NullifierAsserted .
254
+
255
+ appc:predicateOpScheme a skos:ConceptScheme ;
256
+ rdfs:label "predicateOp" ;
257
+ skos:hasTopConcept appc:OpGte, appc:OpLte, appc:OpInSet, appc:OpBefore, appc:OpAfter .
258
+ appc:OpGte a skos:Concept ; skos:inScheme appc:predicateOpScheme ; skos:prefLabel "gte" .
259
+ appc:OpLte a skos:Concept ; skos:inScheme appc:predicateOpScheme ; skos:prefLabel "lte" .
260
+ appc:OpInSet a skos:Concept ; skos:inScheme appc:predicateOpScheme ; skos:prefLabel "in-set" .
261
+ appc:OpBefore a skos:Concept ; skos:inScheme appc:predicateOpScheme ; skos:prefLabel "before" .
262
+ appc:OpAfter a skos:Concept ; skos:inScheme appc:predicateOpScheme ; skos:prefLabel "after" .
263
+
264
+ appc:verifierPlacementScheme a skos:ConceptScheme ;
265
+ rdfs:label "verifierPlacement" ;
266
+ rdfs:comment "`node`: the verifying keys do not fit the edge runtime, so a service beside it verifies; `worker`: verified in the edge runtime itself. A receipt names which." ;
267
+ skos:hasTopConcept appc:PlacementNode, appc:PlacementWorker .
268
+ appc:PlacementNode a skos:Concept ; skos:inScheme appc:verifierPlacementScheme ; skos:prefLabel "node" .
269
+ appc:PlacementWorker a skos:Concept ; skos:inScheme appc:verifierPlacementScheme ; skos:prefLabel "worker" .
270
+
271
+ appc:proofGradeScheme a skos:ConceptScheme ;
272
+ rdfs:label "proofGrade" ;
273
+ rdfs:comment "Spec 442 §7.2 — what a visitor presents at a door. A grade is a KIND, never a rank: a door says which it accepts." ;
274
+ skos:hasTopConcept appc:GradeIdentity, appc:GradeStanding, appc:GradePredicate .
275
+ appc:GradeIdentity a skos:Concept ; skos:inScheme appc:proofGradeScheme ; skos:prefLabel "identity" ; skos:definition "the agent asks as itself (a principal-signed request proof)" .
276
+ appc:GradeStanding a skos:Concept ; skos:inScheme appc:proofGradeScheme ; skos:prefLabel "standing" ; skos:definition "a leaf of another estate's authority projection, proved against a root read from neutral ground" .
277
+ appc:GradePredicate a skos:Concept ; skos:inScheme appc:proofGradeScheme ; skos:prefLabel "predicate" ; skos:definition "a predicate over a credential, proved in zero knowledge under an issuer facet resolved through the chain" .
@@ -0,0 +1,187 @@
1
+ # C-box — SHACL shapes for anonymous credentials (tbox/privacy-credential.ttl; specs 304 / 305 / 442 §7.2 / 443 W5).
2
+ #
3
+ # STRUCTURE, NEVER PERMISSION. A conformant presentation is still only a claim a verifier has yet to check; a
4
+ # conformant mandate authorizes nothing by being well-formed; conformant evidence is evidence. What these refuse is a
5
+ # record that would MISLEAD ON ITS FACE or LEAK BY ITS SHAPE:
6
+ #
7
+ # a pairwise account linked to a person — the one join this vocabulary exists to withhold (INV-305-1)
8
+ # a presentation carrying a claim value — the suite reveals none; a record that does was not made by it
9
+ # a presentation answering no request — a proof of nothing in particular
10
+ # a nullifier with no audience or no grade — "one visit" per what, worth how much?
11
+ # a facet whose subject is a person — a person's agent holds credentials; it does not issue them
12
+ # a facet with no attestation — a document alone proves nothing; the chain does
13
+ # a mandate naming no audience — a device key that may sign for anyone
14
+ # evidence with no facet or no predicate digest — "a predicate held" with neither named is not evidence
15
+ #
16
+ # SUBCLASS HANDLING. sh:class against ap:Agent relies on the rdfs:subClassOf* closure; the house test materializes it
17
+ # from the T-box first. The SPARQL constraints need the cbox codelists in the data graph (they join on skos:inScheme).
18
+
19
+ @prefix appc: <https://agenticprimitives.dev/ns/privacy-credential#> .
20
+ @prefix apatt: <https://agenticprimitives.dev/ns/attestation#> .
21
+ @prefix ap: <https://agenticprimitives.dev/ns/core#> .
22
+ @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
23
+ @prefix sh: <http://www.w3.org/ns/shacl#> .
24
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
25
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
26
+
27
+ # ─── The pairwise account names no person ────────────────────────────────────────────────────────
28
+ appc:PairwiseAccountShape a sh:NodeShape ;
29
+ rdfs:label "PairwiseAccount shape" ;
30
+ sh:targetClass appc:PairwiseAccount ;
31
+ sh:property [
32
+ sh:path appc:pairwiseFor ;
33
+ sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:anyURI ;
34
+ sh:message "A pairwise account exists for exactly ONE verifier origin (appc:pairwiseFor). The same holder at another origin is another account." ;
35
+ ] ;
36
+ sh:sparql [
37
+ sh:message "A pairwise account MUST NOT be linked to any Agent: the join from the account a verifier sees to the person exists only in her vault (INV-305-1, ADR-0025). A triple from this account to an ap:Agent, under any property, is the disclosure this vocabulary withholds." ;
38
+ sh:select """
39
+ SELECT $this ?p ?agent WHERE {
40
+ $this ?p ?agent .
41
+ ?agent a/<http://www.w3.org/2000/01/rdf-schema#subClassOf>* <https://agenticprimitives.dev/ns/core#Agent> .
42
+ }
43
+ """ ;
44
+ ] .
45
+
46
+ # ─── A presentation answers one request, names its facet, and carries no claim value ────────────
47
+ appc:PrivatePresentationShape a sh:NodeShape ;
48
+ rdfs:label "PrivatePresentation shape" ;
49
+ sh:targetClass appc:PrivatePresentation ;
50
+ sh:property [
51
+ sh:path appc:answersRequest ;
52
+ sh:minCount 1 ; sh:maxCount 1 ; sh:class appc:ProofRequest ;
53
+ sh:message "A presentation answers exactly ONE proof request — the verifier's own, with its audience and single-use nonce. A proof answering no request is a proof of nothing in particular." ;
54
+ ] ;
55
+ sh:property [
56
+ sh:path appc:presentedUnder ;
57
+ sh:minCount 1 ; sh:maxCount 1 ; sh:class appc:IssuerKeyFacet ;
58
+ sh:message "A presentation names the ONE issuer facet it was made under; the verifier resolves it through the chain and checks the proven key against it." ;
59
+ ] ;
60
+ sh:property [
61
+ sh:path appc:provesPredicate ;
62
+ sh:maxCount 1 ; sh:class appc:PredicateProgram ;
63
+ sh:message "At most one predicate program per presentation — the request's." ;
64
+ ] ;
65
+ sh:property [
66
+ sh:path appc:carriesNullifier ;
67
+ sh:maxCount 1 ; sh:class appc:Nullifier ;
68
+ sh:message "At most one nullifier, for the request's audience." ;
69
+ ] ;
70
+ sh:property [
71
+ sh:path appc:predicateClaim ;
72
+ sh:maxCount 0 ;
73
+ sh:message "A presentation carries NO claim name or value of its own: the suite reveals none, and a record that does was not made by it. Claims belong to the predicate PROGRAM (the verifier's thresholds), never to the presentation." ;
74
+ ] ;
75
+ sh:property [
76
+ sh:path appc:predicateOperand ;
77
+ sh:maxCount 0 ;
78
+ sh:message "A presentation carries no operand — see appc:predicateClaim." ;
79
+ ] .
80
+
81
+ # ─── A nullifier is scoped and graded ─────────────────────────────────────────────────────────────
82
+ appc:NullifierShape a sh:NodeShape ;
83
+ rdfs:label "Nullifier shape" ;
84
+ sh:targetClass appc:Nullifier ;
85
+ sh:property [
86
+ sh:path appc:audience ;
87
+ sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:anyURI ;
88
+ sh:message "A nullifier is one-per-AUDIENCE: without the audience it is a value that links nothing to nothing, or everything to everything." ;
89
+ ] ;
90
+ sh:property [
91
+ sh:path appc:nullifierValue ;
92
+ sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:string ;
93
+ sh:message "Exactly one value." ;
94
+ ] ;
95
+ sh:property [
96
+ sh:path appc:nullifierGrade ;
97
+ sh:minCount 1 ; sh:maxCount 1 ;
98
+ sh:message "A nullifier says what it is worth: its grade (appc:nullifierGradeScheme — asserted | in-circuit). An ungraded nullifier would be read as the stronger one." ;
99
+ ] ;
100
+ sh:sparql [
101
+ sh:message "The grade MUST be a concept of appc:nullifierGradeScheme." ;
102
+ sh:select """
103
+ SELECT $this ?g WHERE {
104
+ $this <https://agenticprimitives.dev/ns/privacy-credential#nullifierGrade> ?g .
105
+ FILTER NOT EXISTS { ?g <http://www.w3.org/2004/02/skos/core#inScheme> <https://agenticprimitives.dev/ns/privacy-credential#nullifierGradeScheme> }
106
+ }
107
+ """ ;
108
+ ] .
109
+
110
+ # ─── An issuer facet is an organization's or a service's, anchored ───────────────────────────────
111
+ appc:IssuerKeyFacetShape a sh:NodeShape ;
112
+ rdfs:label "IssuerKeyFacet shape" ;
113
+ sh:targetClass appc:IssuerKeyFacet ;
114
+ sh:property [
115
+ sh:path appc:facetSubject ;
116
+ sh:minCount 1 ; sh:maxCount 1 ; sh:class ap:Agent ;
117
+ sh:message "A facet speaks for exactly one agent." ;
118
+ ] ;
119
+ sh:property [
120
+ sh:path appc:facetKeyId ;
121
+ sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:string ;
122
+ sh:message "One key id — what a credential names and a verifier resolves by." ;
123
+ ] ;
124
+ sh:property [
125
+ sh:path appc:facetHash ;
126
+ sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:string ;
127
+ sh:message "The facet hash the agent signed and the attestation carries." ;
128
+ ] ;
129
+ sh:property [
130
+ sh:path appc:anchoredBy ;
131
+ sh:minCount 1 ; sh:class apatt:Attestation ;
132
+ sh:message "A facet is ANCHORED: an attestation on the issuer's chain binds it to the agent. A facet document with no attestation proves nothing to a stranger — the chain does." ;
133
+ ] ;
134
+ sh:sparql [
135
+ sh:message "A facet's subject is an organization or a service — NEVER a person. A person's agent holds credentials; it does not issue them (spec 443 §2)." ;
136
+ sh:select """
137
+ SELECT $this ?subject WHERE {
138
+ $this <https://agenticprimitives.dev/ns/privacy-credential#facetSubject> ?subject .
139
+ ?subject a/<http://www.w3.org/2000/01/rdf-schema#subClassOf>* <https://agenticprimitives.dev/ns/core#PersonAgent> .
140
+ }
141
+ """ ;
142
+ ] .
143
+
144
+ # ─── A presentation mandate is bounded ───────────────────────────────────────────────────────────
145
+ appc:PresentationMandateShape a sh:NodeShape ;
146
+ rdfs:label "PresentationMandate shape" ;
147
+ sh:targetClass appc:PresentationMandate ;
148
+ sh:property [
149
+ sh:path appc:mandateAudience ;
150
+ sh:minCount 1 ; sh:datatype xsd:anyURI ;
151
+ sh:message "A presentation mandate names at least one verifier origin. A device key that may sign for ANY audience is a key that may be phished by any door." ;
152
+ ] ;
153
+ sh:property [
154
+ sh:path appc:mandatePredicateDigest ;
155
+ sh:minCount 1 ; sh:datatype xsd:string ;
156
+ sh:message "A presentation mandate names at least one predicate program by digest — what the person agreed may be proved." ;
157
+ ] ;
158
+ sh:property [
159
+ sh:path appc:mandateIssuerKeyId ;
160
+ sh:minCount 1 ; sh:datatype xsd:string ;
161
+ sh:message "A presentation mandate names at least one issuer facet." ;
162
+ ] .
163
+
164
+ # ─── Evidence names what held ────────────────────────────────────────────────────────────────────
165
+ appc:PredicateAdmissionEvidenceShape a sh:NodeShape ;
166
+ rdfs:label "PredicateAdmissionEvidence shape" ;
167
+ sh:targetClass appc:PredicateAdmissionEvidence ;
168
+ sh:property [
169
+ sh:path appc:evidenceFacet ;
170
+ sh:minCount 1 ; sh:maxCount 1 ; sh:class appc:IssuerKeyFacet ;
171
+ sh:message "Evidence names the facet the proof verified under." ;
172
+ ] ;
173
+ sh:property [
174
+ sh:path appc:evidencePredicateDigest ;
175
+ sh:minCount 1 ; sh:maxCount 1 ; sh:datatype xsd:string ;
176
+ sh:message "Evidence names the predicate program the DOOR asked, by digest. \"A predicate held\" with none named is not evidence." ;
177
+ ] ;
178
+ sh:property [
179
+ sh:path appc:verifierPlacement ;
180
+ sh:minCount 1 ; sh:maxCount 1 ;
181
+ sh:message "Evidence says WHERE the proof was verified (appc:verifierPlacementScheme). A receipt that cannot is not a receipt." ;
182
+ ] ;
183
+ sh:property [
184
+ sh:path appc:predicateOperand ;
185
+ sh:maxCount 0 ;
186
+ sh:message "Evidence carries no claim value and no operand — the digest of the program is what it names." ;
187
+ ] .
package/context.jsonld CHANGED
@@ -38,6 +38,7 @@
38
38
  "apactor": "https://agenticprimitives.dev/ns/actor#",
39
39
  "apguide": "https://agenticprimitives.dev/ns/guidance#",
40
40
  "apcoord": "https://agenticprimitives.dev/ns/coordination#",
41
+ "appc": "https://agenticprimitives.dev/ns/privacy-credential#",
41
42
 
42
43
  "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
43
44
  "rdfs": "http://www.w3.org/2000/01/rdf-schema#",
@@ -11,8 +11,8 @@ export declare const ARTIFACTS: {
11
11
  readonly runMeasuresContext: "run-measures.jsonld";
12
12
  /** Spec 415 S0/SEL-1 — replay sets (DCAT) and judgments (EARL). */
13
13
  readonly evaluationContext: "evaluation.jsonld";
14
- readonly tbox: readonly ["tbox/core.ttl", "tbox/identity.ttl", "tbox/contact.ttl", "tbox/naming.ttl", "tbox/intents.ttl", "tbox/constraints.ttl", "tbox/resolution.ttl", "tbox/agreement.ttl", "tbox/payment.ttl", "tbox/fulfillment.ttl", "tbox/attestation.ttl", "tbox/skills.ttl", "tbox/geo.ttl", "tbox/content.ttl", "tbox/registry.ttl", "tbox/discovery.ttl", "tbox/trust.ttl", "tbox/security-exposure.ttl", "tbox/agent-resolution.ttl", "tbox/verification-receipt.ttl", "tbox/scope.ttl", "tbox/situation.ttl", "tbox/org.ttl", "tbox/familyoffice.ttl", "tbox/entitlement.ttl", "tbox/interaction.ttl", "tbox/messaging.ttl", "tbox/guidance.ttl", "tbox/actor-context.ttl", "tbox/context.ttl", "tbox/profile.ttl", "tbox/execution.ttl", "tbox/plan.ttl", "tbox/prov-imports.ttl", "tbox/skos-imports.ttl", "tbox/dqv-imports.ttl", "tbox/earl-imports.ttl", "tbox/dcat-imports.ttl", "tbox/evaluation.ttl", "tbox/coordination.ttl", "tbox/engagement.ttl", "tbox/card-projection.ttl", "tbox/estate.ttl"];
15
- readonly cbox: readonly ["cbox/canonical-agent-id-shape.shacl.ttl", "cbox/controlled-vocabularies.ttl", "cbox/registry-vocabulary.ttl", "cbox/skill-vocabulary.ttl", "cbox/geo-vocabulary.ttl", "cbox/scope-vocabulary.ttl", "cbox/content-vocabulary.ttl", "cbox/discovery-graph-shapes.shacl.ttl", "cbox/interaction-vocabulary.ttl", "cbox/familyoffice-vocabulary.ttl", "cbox/familyoffice-shapes.shacl.ttl", "cbox/consultation-shapes.shacl.ttl", "cbox/interaction-shapes.shacl.ttl", "cbox/skill-grounding-vocabulary.ttl", "cbox/guidance-vocabulary.ttl", "cbox/profile-facet-vocabulary.ttl", "cbox/agent-facet-shapes.shacl.ttl", "cbox/capability-catalog-shapes.shacl.ttl", "cbox/org-team-shapes.shacl.ttl", "cbox/naming-registry-shapes.shacl.ttl", "cbox/run-provenance-shapes.shacl.ttl", "cbox/run-measures-shapes.shacl.ttl", "cbox/judgment-shapes.shacl.ttl", "cbox/card-projection-shapes.shacl.ttl"];
14
+ readonly tbox: readonly ["tbox/core.ttl", "tbox/identity.ttl", "tbox/contact.ttl", "tbox/naming.ttl", "tbox/intents.ttl", "tbox/constraints.ttl", "tbox/resolution.ttl", "tbox/agreement.ttl", "tbox/payment.ttl", "tbox/fulfillment.ttl", "tbox/attestation.ttl", "tbox/skills.ttl", "tbox/geo.ttl", "tbox/content.ttl", "tbox/registry.ttl", "tbox/discovery.ttl", "tbox/trust.ttl", "tbox/security-exposure.ttl", "tbox/agent-resolution.ttl", "tbox/verification-receipt.ttl", "tbox/scope.ttl", "tbox/situation.ttl", "tbox/org.ttl", "tbox/familyoffice.ttl", "tbox/entitlement.ttl", "tbox/interaction.ttl", "tbox/messaging.ttl", "tbox/guidance.ttl", "tbox/actor-context.ttl", "tbox/context.ttl", "tbox/profile.ttl", "tbox/execution.ttl", "tbox/plan.ttl", "tbox/prov-imports.ttl", "tbox/skos-imports.ttl", "tbox/dqv-imports.ttl", "tbox/earl-imports.ttl", "tbox/dcat-imports.ttl", "tbox/evaluation.ttl", "tbox/coordination.ttl", "tbox/engagement.ttl", "tbox/card-projection.ttl", "tbox/estate.ttl", "tbox/privacy-credential.ttl"];
15
+ readonly cbox: readonly ["cbox/canonical-agent-id-shape.shacl.ttl", "cbox/controlled-vocabularies.ttl", "cbox/registry-vocabulary.ttl", "cbox/skill-vocabulary.ttl", "cbox/geo-vocabulary.ttl", "cbox/scope-vocabulary.ttl", "cbox/content-vocabulary.ttl", "cbox/discovery-graph-shapes.shacl.ttl", "cbox/interaction-vocabulary.ttl", "cbox/familyoffice-vocabulary.ttl", "cbox/familyoffice-shapes.shacl.ttl", "cbox/privacy-credential-shapes.shacl.ttl", "cbox/consultation-shapes.shacl.ttl", "cbox/interaction-shapes.shacl.ttl", "cbox/skill-grounding-vocabulary.ttl", "cbox/guidance-vocabulary.ttl", "cbox/profile-facet-vocabulary.ttl", "cbox/agent-facet-shapes.shacl.ttl", "cbox/capability-catalog-shapes.shacl.ttl", "cbox/org-team-shapes.shacl.ttl", "cbox/naming-registry-shapes.shacl.ttl", "cbox/run-provenance-shapes.shacl.ttl", "cbox/run-measures-shapes.shacl.ttl", "cbox/judgment-shapes.shacl.ttl", "cbox/card-projection-shapes.shacl.ttl"];
16
16
  readonly mappings: readonly ["mappings/spine-standards.ttl", "mappings/agent-discovery-standards.ttl", "mappings/collaboration-profile.ttl", "mappings/collaboration-crosswalk-actors.ttl", "mappings/collaboration-crosswalk-organization.ttl", "mappings/collaboration-crosswalk-messaging.ttl", "mappings/collaboration-crosswalk-intent.ttl", "mappings/collaboration-crosswalk-skills.ttl", "mappings/collaboration-crosswalk-authority.ttl", "mappings/collaboration-crosswalk-protocols.ttl", "mappings/collaboration-crosswalk-guidance.ttl", "mappings/actor-context-standards.ttl", "mappings/commerce-engagement-crosswalk.ttl"];
17
17
  };
18
18
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"AASA;;;;GAIG;AACH,eAAO,MAAM,SAAS;;IAEpB,6GAA6G;;IAE7G,0GAA0G;;IAE1G,mEAAmE;;;;;CAmJ3D,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEzD"}
1
+ {"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"AASA;;;;GAIG;AACH,eAAO,MAAM,SAAS;;IAEpB,6GAA6G;;IAE7G,0GAA0G;;IAE1G,mEAAmE;;;;;CAqJ3D,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEzD"}
package/dist/artifacts.js CHANGED
@@ -95,6 +95,7 @@ export const ARTIFACTS = {
95
95
  // Estate projection (spec 410 §4) — what an estate vouches for on neutral ground and the opening it
96
96
  // keeps. Declared because the openings became a vault record and a vault record needs a class.
97
97
  'tbox/estate.ttl',
98
+ 'tbox/privacy-credential.ttl',
98
99
  ],
99
100
  cbox: [
100
101
  'cbox/canonical-agent-id-shape.shacl.ttl',
@@ -117,6 +118,7 @@ export const ARTIFACTS = {
117
118
  // FamilyOffice relationship-archetype shapes (New City AI) — a NodeShape per apfo relationship,
118
119
  // validating role bindings + typed body before a portal vault-first write.
119
120
  'cbox/familyoffice-shapes.shacl.ttl',
121
+ 'cbox/privacy-credential-shapes.shacl.ttl',
120
122
  // Routed-consultation artifact shapes (spec 329 §6)
121
123
  'cbox/consultation-shapes.shacl.ttl',
122
124
  // Agentic Interaction shapes (spec 340; ADR-0058) — structure, never permission
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -54,6 +54,7 @@ export declare const NS: {
54
54
  readonly apcoord: "https://agenticprimitives.dev/ns/coordination#";
55
55
  readonly apeng: "https://agenticprimitives.dev/ns/engagement#";
56
56
  readonly apest: "https://agenticprimitives.dev/ns/estate#";
57
+ readonly appc: "https://agenticprimitives.dev/ns/privacy-credential#";
57
58
  };
58
59
  /**
59
60
  * EXTERNAL namespaces the substrate emits terms under (not AP-owned, so not in {@link NS} —
@@ -383,6 +384,36 @@ export declare const CLASS: {
383
384
  readonly FailedActivity: "https://w3id.org/ep-plan#FailedActivity";
384
385
  /** One thing an estate vouches for, WITH its opening — the estate's own record behind a public root. */
385
386
  readonly ProjectionSubmission: "https://agenticprimitives.dev/ns/estate#ProjectionSubmission";
387
+ /** A key an issuing agent (org or service, never a person) signs credentials with; anchored as an attestation. */
388
+ readonly IssuerKeyFacet: "https://agenticprimitives.dev/ns/privacy-credential#IssuerKeyFacet";
389
+ /** The issuer's live-credential root on neutral ground — its own, tagged row; revocation is retire + re-anchor. */
390
+ readonly IssuerRow: "https://agenticprimitives.dev/ns/privacy-credential#IssuerRow";
391
+ /** A credential made to be proved about, not shown: holder-bound, selectively disclosable; the holder's vault record. */
392
+ readonly AnonymousCredential: "https://agenticprimitives.dev/ns/privacy-credential#AnonymousCredential";
393
+ /** The custodied holder-binding key; signs only under a presentation mandate, judged per signature. */
394
+ readonly DeviceKey: "https://agenticprimitives.dev/ns/privacy-credential#DeviceKey";
395
+ /** The account a verifier sees: one per verifier origin, unlinkable across them; never the person. */
396
+ readonly PairwiseAccount: "https://agenticprimitives.dev/ns/privacy-credential#PairwiseAccount";
397
+ /** What a verifier asks — built from ITS policy and ITS challenge, never from a presentation. */
398
+ readonly ProofRequest: "https://agenticprimitives.dev/ns/privacy-credential#ProofRequest";
399
+ /** The statement proved: predicates compiled to canonical form and digested; what a mandate names. */
400
+ readonly PredicateProgram: "https://agenticprimitives.dev/ns/privacy-credential#PredicateProgram";
401
+ /** One claim, one operator, one operand — the verifier's threshold, never the holder's value. */
402
+ readonly Predicate: "https://agenticprimitives.dev/ns/privacy-credential#Predicate";
403
+ /** The holder's answer: a zero-knowledge proof, hidden keys and claims; held by a door for minutes under a reference. */
404
+ readonly PrivatePresentation: "https://agenticprimitives.dev/ns/privacy-credential#PrivatePresentation";
405
+ /** One visit per audience: deterministic per (device key, audience), consumed atomically by the verifier's store. */
406
+ readonly Nullifier: "https://agenticprimitives.dev/ns/privacy-credential#Nullifier";
407
+ /** The issuer still stands behind this credential as of a sequence — proved against the root the verifier READ. */
408
+ readonly CredentialStatusPresentation: "https://agenticprimitives.dev/ns/privacy-credential#CredentialStatusPresentation";
409
+ /** The person's standing permission for her device key to sign — a delegation bounded to venues, programs, facets. */
410
+ readonly PresentationMandate: "https://agenticprimitives.dev/ns/privacy-credential#PresentationMandate";
411
+ /** One judgement of the mandate for one device-key signature; every outcome is receipt material. */
412
+ readonly PresentationRelease: "https://agenticprimitives.dev/ns/privacy-credential#PresentationRelease";
413
+ /** What a verifier asks and accepts, declared where a holder can read it. Says what the door looks at; grants nothing. */
414
+ readonly VerifierPolicy: "https://agenticprimitives.dev/ns/privacy-credential#VerifierPolicy";
415
+ /** The predicate held, as what a door kept beside its decision — evidence, never authority. */
416
+ readonly PredicateAdmissionEvidence: "https://agenticprimitives.dev/ns/privacy-credential#PredicateAdmissionEvidence";
386
417
  };
387
418
  /** Predicate / property IRIs (T-box). */
388
419
  export declare const PREDICATE: {
@@ -879,6 +910,71 @@ export declare const PREDICATE: {
879
910
  readonly submissionSource: "https://agenticprimitives.dev/ns/estate#submissionSource";
880
911
  readonly vouchExpiresAt: "https://agenticprimitives.dev/ns/estate#vouchExpiresAt";
881
912
  readonly retiredReason: "https://agenticprimitives.dev/ns/estate#retiredReason";
913
+ readonly facetSubject: "https://agenticprimitives.dev/ns/privacy-credential#facetSubject";
914
+ readonly facetKeyId: "https://agenticprimitives.dev/ns/privacy-credential#facetKeyId";
915
+ readonly facetSuite: "https://agenticprimitives.dev/ns/privacy-credential#facetSuite";
916
+ readonly facetPublicKeyThumbprint: "https://agenticprimitives.dev/ns/privacy-credential#facetPublicKeyThumbprint";
917
+ readonly facetHash: "https://agenticprimitives.dev/ns/privacy-credential#facetHash";
918
+ readonly facetValidFrom: "https://agenticprimitives.dev/ns/privacy-credential#facetValidFrom";
919
+ readonly facetValidUntil: "https://agenticprimitives.dev/ns/privacy-credential#facetValidUntil";
920
+ readonly anchoredBy: "https://agenticprimitives.dev/ns/privacy-credential#anchoredBy";
921
+ readonly issuerRowOf: "https://agenticprimitives.dev/ns/privacy-credential#issuerRowOf";
922
+ readonly issuerRowId: "https://agenticprimitives.dev/ns/privacy-credential#issuerRowId";
923
+ readonly liveCredentialRoot: "https://agenticprimitives.dev/ns/privacy-credential#liveCredentialRoot";
924
+ readonly anchoredSequence: "https://agenticprimitives.dev/ns/privacy-credential#anchoredSequence";
925
+ readonly anchoredAt: "https://agenticprimitives.dev/ns/privacy-credential#anchoredAt";
926
+ readonly hasLiveCredentialLeaf: "https://agenticprimitives.dev/ns/privacy-credential#hasLiveCredentialLeaf";
927
+ readonly issuedUnder: "https://agenticprimitives.dev/ns/privacy-credential#issuedUnder";
928
+ readonly boundToDeviceKey: "https://agenticprimitives.dev/ns/privacy-credential#boundToDeviceKey";
929
+ readonly credentialDigest: "https://agenticprimitives.dev/ns/privacy-credential#credentialDigest";
930
+ readonly claimSchema: "https://agenticprimitives.dev/ns/privacy-credential#claimSchema";
931
+ readonly deviceKeyThumbprint: "https://agenticprimitives.dev/ns/privacy-credential#deviceKeyThumbprint";
932
+ readonly pairwiseFor: "https://agenticprimitives.dev/ns/privacy-credential#pairwiseFor";
933
+ readonly requestSuite: "https://agenticprimitives.dev/ns/privacy-credential#requestSuite";
934
+ readonly verifierId: "https://agenticprimitives.dev/ns/privacy-credential#verifierId";
935
+ readonly audience: "https://agenticprimitives.dev/ns/privacy-credential#audience";
936
+ readonly challengeNonce: "https://agenticprimitives.dev/ns/privacy-credential#challengeNonce";
937
+ readonly asksPredicate: "https://agenticprimitives.dev/ns/privacy-credential#asksPredicate";
938
+ readonly acceptedBundleVersion: "https://agenticprimitives.dev/ns/privacy-credential#acceptedBundleVersion";
939
+ readonly predicateDigest: "https://agenticprimitives.dev/ns/privacy-credential#predicateDigest";
940
+ readonly hasPredicate: "https://agenticprimitives.dev/ns/privacy-credential#hasPredicate";
941
+ readonly predicateClaim: "https://agenticprimitives.dev/ns/privacy-credential#predicateClaim";
942
+ readonly predicateOp: "https://agenticprimitives.dev/ns/privacy-credential#predicateOp";
943
+ readonly predicateOperand: "https://agenticprimitives.dev/ns/privacy-credential#predicateOperand";
944
+ readonly answersRequest: "https://agenticprimitives.dev/ns/privacy-credential#answersRequest";
945
+ readonly presentedUnder: "https://agenticprimitives.dev/ns/privacy-credential#presentedUnder";
946
+ readonly provesPredicate: "https://agenticprimitives.dev/ns/privacy-credential#provesPredicate";
947
+ readonly bundleVersion: "https://agenticprimitives.dev/ns/privacy-credential#bundleVersion";
948
+ readonly relationshipHandle: "https://agenticprimitives.dev/ns/privacy-credential#relationshipHandle";
949
+ readonly carriesNullifier: "https://agenticprimitives.dev/ns/privacy-credential#carriesNullifier";
950
+ readonly carriesStatus: "https://agenticprimitives.dev/ns/privacy-credential#carriesStatus";
951
+ readonly signedByDeviceKey: "https://agenticprimitives.dev/ns/privacy-credential#signedByDeviceKey";
952
+ readonly madeUnderMandate: "https://agenticprimitives.dev/ns/privacy-credential#madeUnderMandate";
953
+ readonly presents: "https://agenticprimitives.dev/ns/privacy-credential#presents";
954
+ readonly nullifierValue: "https://agenticprimitives.dev/ns/privacy-credential#nullifierValue";
955
+ readonly nullifierGrade: "https://agenticprimitives.dev/ns/privacy-credential#nullifierGrade";
956
+ readonly statusOf: "https://agenticprimitives.dev/ns/privacy-credential#statusOf";
957
+ readonly statusSequence: "https://agenticprimitives.dev/ns/privacy-credential#statusSequence";
958
+ readonly mandateAudience: "https://agenticprimitives.dev/ns/privacy-credential#mandateAudience";
959
+ readonly mandatePredicateDigest: "https://agenticprimitives.dev/ns/privacy-credential#mandatePredicateDigest";
960
+ readonly mandateIssuerKeyId: "https://agenticprimitives.dev/ns/privacy-credential#mandateIssuerKeyId";
961
+ readonly maxPresentations: "https://agenticprimitives.dev/ns/privacy-credential#maxPresentations";
962
+ readonly releasedUnder: "https://agenticprimitives.dev/ns/privacy-credential#releasedUnder";
963
+ readonly releaseOutcome: "https://agenticprimitives.dev/ns/privacy-credential#releaseOutcome";
964
+ readonly policyAsksPredicate: "https://agenticprimitives.dev/ns/privacy-credential#policyAsksPredicate";
965
+ readonly requiresNullifier: "https://agenticprimitives.dev/ns/privacy-credential#requiresNullifier";
966
+ readonly acceptsNullifierGrade: "https://agenticprimitives.dev/ns/privacy-credential#acceptsNullifierGrade";
967
+ readonly nullifierWindowSeconds: "https://agenticprimitives.dev/ns/privacy-credential#nullifierWindowSeconds";
968
+ readonly requiresStatus: "https://agenticprimitives.dev/ns/privacy-credential#requiresStatus";
969
+ readonly statusMaxAgeSeconds: "https://agenticprimitives.dev/ns/privacy-credential#statusMaxAgeSeconds";
970
+ readonly trustsIssuerFacet: "https://agenticprimitives.dev/ns/privacy-credential#trustsIssuerFacet";
971
+ readonly verifierPlacement: "https://agenticprimitives.dev/ns/privacy-credential#verifierPlacement";
972
+ readonly evidenceFacet: "https://agenticprimitives.dev/ns/privacy-credential#evidenceFacet";
973
+ readonly evidencePredicateDigest: "https://agenticprimitives.dev/ns/privacy-credential#evidencePredicateDigest";
974
+ readonly evidenceNullifierGrade: "https://agenticprimitives.dev/ns/privacy-credential#evidenceNullifierGrade";
975
+ readonly evidenceStatusSequence: "https://agenticprimitives.dev/ns/privacy-credential#evidenceStatusSequence";
976
+ readonly evidencedIn: "https://agenticprimitives.dev/ns/privacy-credential#evidencedIn";
977
+ readonly proofGrade: "https://agenticprimitives.dev/ns/privacy-credential#proofGrade";
882
978
  };
883
979
  /** SHACL shape IRIs (C-box).
884
980
  *
@@ -891,6 +987,12 @@ export declare const PREDICATE: {
891
987
  export declare const SHAPE: {
892
988
  readonly CanonicalAgentId: "https://agenticprimitives.dev/ns/core#CanonicalAgentIdShape";
893
989
  readonly CredentialFacet: "https://agenticprimitives.dev/ns/credential#CredentialFacetShape";
990
+ readonly PairwiseAccount: "https://agenticprimitives.dev/ns/privacy-credential#PairwiseAccountShape";
991
+ readonly PrivatePresentation: "https://agenticprimitives.dev/ns/privacy-credential#PrivatePresentationShape";
992
+ readonly Nullifier: "https://agenticprimitives.dev/ns/privacy-credential#NullifierShape";
993
+ readonly IssuerKeyFacet: "https://agenticprimitives.dev/ns/privacy-credential#IssuerKeyFacetShape";
994
+ readonly PresentationMandate: "https://agenticprimitives.dev/ns/privacy-credential#PresentationMandateShape";
995
+ readonly PredicateAdmissionEvidence: "https://agenticprimitives.dev/ns/privacy-credential#PredicateAdmissionEvidenceShape";
894
996
  readonly ContentDescriptor: "https://agenticprimitives.dev/ns/content#ContentDescriptorShape";
895
997
  readonly RegistryEntry: "https://agenticprimitives.dev/ns/registry#RegistryEntryShape";
896
998
  readonly SignedAgentCard: "https://agenticprimitives.dev/ns/registry#SignedAgentCardShape";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -109,6 +109,12 @@ export const NS = {
109
109
  // they are a vault record and not a cache (ADR-0055). Evidence, never authority: inclusion says a grant
110
110
  // was live when the tree was last built, never that a party may act.
111
111
  apest: 'https://agenticprimitives.dev/ns/estate#',
112
+ // Anonymous credentials (specs 304 / 305 / 442 §7.2 / 443 W5; tbox/privacy-credential.ttl) — issuer-key facets,
113
+ // holder-bound credentials, proof requests and predicate programs, zero-knowledge presentations with their
114
+ // nullifier and status, the issuer's live-credential row, the presentation mandate, the predicate as admission
115
+ // evidence. PROOF IS EVIDENCE, THE MANDATE IS AUTHORITY, THE RECEIPT BINDS THE TWO: no gate reads an appc:
116
+ // record as a permission, and no property leads from a pairwise account or a presentation to the person.
117
+ appc: 'https://agenticprimitives.dev/ns/privacy-credential#',
112
118
  };
113
119
  /**
114
120
  * EXTERNAL namespaces the substrate emits terms under (not AP-owned, so not in {@link NS} —
@@ -515,6 +521,37 @@ export const CLASS = {
515
521
  // ── Estate projection (tbox/estate.ttl; spec 410 §4) ──
516
522
  /** One thing an estate vouches for, WITH its opening — the estate's own record behind a public root. */
517
523
  ProjectionSubmission: `${NS.apest}ProjectionSubmission`,
524
+ // ── Anonymous credentials (tbox/privacy-credential.ttl; specs 304 / 305 / 442 §7.2 / 443 W5) ──
525
+ /** A key an issuing agent (org or service, never a person) signs credentials with; anchored as an attestation. */
526
+ IssuerKeyFacet: `${NS.appc}IssuerKeyFacet`,
527
+ /** The issuer's live-credential root on neutral ground — its own, tagged row; revocation is retire + re-anchor. */
528
+ IssuerRow: `${NS.appc}IssuerRow`,
529
+ /** A credential made to be proved about, not shown: holder-bound, selectively disclosable; the holder's vault record. */
530
+ AnonymousCredential: `${NS.appc}AnonymousCredential`,
531
+ /** The custodied holder-binding key; signs only under a presentation mandate, judged per signature. */
532
+ DeviceKey: `${NS.appc}DeviceKey`,
533
+ /** The account a verifier sees: one per verifier origin, unlinkable across them; never the person. */
534
+ PairwiseAccount: `${NS.appc}PairwiseAccount`,
535
+ /** What a verifier asks — built from ITS policy and ITS challenge, never from a presentation. */
536
+ ProofRequest: `${NS.appc}ProofRequest`,
537
+ /** The statement proved: predicates compiled to canonical form and digested; what a mandate names. */
538
+ PredicateProgram: `${NS.appc}PredicateProgram`,
539
+ /** One claim, one operator, one operand — the verifier's threshold, never the holder's value. */
540
+ Predicate: `${NS.appc}Predicate`,
541
+ /** The holder's answer: a zero-knowledge proof, hidden keys and claims; held by a door for minutes under a reference. */
542
+ PrivatePresentation: `${NS.appc}PrivatePresentation`,
543
+ /** One visit per audience: deterministic per (device key, audience), consumed atomically by the verifier's store. */
544
+ Nullifier: `${NS.appc}Nullifier`,
545
+ /** The issuer still stands behind this credential as of a sequence — proved against the root the verifier READ. */
546
+ CredentialStatusPresentation: `${NS.appc}CredentialStatusPresentation`,
547
+ /** The person's standing permission for her device key to sign — a delegation bounded to venues, programs, facets. */
548
+ PresentationMandate: `${NS.appc}PresentationMandate`,
549
+ /** One judgement of the mandate for one device-key signature; every outcome is receipt material. */
550
+ PresentationRelease: `${NS.appc}PresentationRelease`,
551
+ /** What a verifier asks and accepts, declared where a holder can read it. Says what the door looks at; grants nothing. */
552
+ VerifierPolicy: `${NS.appc}VerifierPolicy`,
553
+ /** The predicate held, as what a door kept beside its decision — evidence, never authority. */
554
+ PredicateAdmissionEvidence: `${NS.appc}PredicateAdmissionEvidence`,
518
555
  };
519
556
  /** Predicate / property IRIs (T-box). */
520
557
  export const PREDICATE = {
@@ -1077,6 +1114,73 @@ export const PREDICATE = {
1077
1114
  submissionSource: `${NS.apest}submissionSource`,
1078
1115
  vouchExpiresAt: `${NS.apest}vouchExpiresAt`,
1079
1116
  retiredReason: `${NS.apest}retiredReason`,
1117
+ // Anonymous credentials (tbox/privacy-credential.ttl) — the issuer side, the holder side, the exchange, the
1118
+ // authority around the proof, the verifier's policy and the evidence a door keeps.
1119
+ facetSubject: `${NS.appc}facetSubject`,
1120
+ facetKeyId: `${NS.appc}facetKeyId`,
1121
+ facetSuite: `${NS.appc}facetSuite`,
1122
+ facetPublicKeyThumbprint: `${NS.appc}facetPublicKeyThumbprint`,
1123
+ facetHash: `${NS.appc}facetHash`,
1124
+ facetValidFrom: `${NS.appc}facetValidFrom`,
1125
+ facetValidUntil: `${NS.appc}facetValidUntil`,
1126
+ anchoredBy: `${NS.appc}anchoredBy`,
1127
+ issuerRowOf: `${NS.appc}issuerRowOf`,
1128
+ issuerRowId: `${NS.appc}issuerRowId`,
1129
+ liveCredentialRoot: `${NS.appc}liveCredentialRoot`,
1130
+ anchoredSequence: `${NS.appc}anchoredSequence`,
1131
+ anchoredAt: `${NS.appc}anchoredAt`,
1132
+ hasLiveCredentialLeaf: `${NS.appc}hasLiveCredentialLeaf`,
1133
+ issuedUnder: `${NS.appc}issuedUnder`,
1134
+ boundToDeviceKey: `${NS.appc}boundToDeviceKey`,
1135
+ credentialDigest: `${NS.appc}credentialDigest`,
1136
+ claimSchema: `${NS.appc}claimSchema`,
1137
+ deviceKeyThumbprint: `${NS.appc}deviceKeyThumbprint`,
1138
+ pairwiseFor: `${NS.appc}pairwiseFor`,
1139
+ requestSuite: `${NS.appc}requestSuite`,
1140
+ verifierId: `${NS.appc}verifierId`,
1141
+ audience: `${NS.appc}audience`,
1142
+ challengeNonce: `${NS.appc}challengeNonce`,
1143
+ asksPredicate: `${NS.appc}asksPredicate`,
1144
+ acceptedBundleVersion: `${NS.appc}acceptedBundleVersion`,
1145
+ predicateDigest: `${NS.appc}predicateDigest`,
1146
+ hasPredicate: `${NS.appc}hasPredicate`,
1147
+ predicateClaim: `${NS.appc}predicateClaim`,
1148
+ predicateOp: `${NS.appc}predicateOp`,
1149
+ predicateOperand: `${NS.appc}predicateOperand`,
1150
+ answersRequest: `${NS.appc}answersRequest`,
1151
+ presentedUnder: `${NS.appc}presentedUnder`,
1152
+ provesPredicate: `${NS.appc}provesPredicate`,
1153
+ bundleVersion: `${NS.appc}bundleVersion`,
1154
+ relationshipHandle: `${NS.appc}relationshipHandle`,
1155
+ carriesNullifier: `${NS.appc}carriesNullifier`,
1156
+ carriesStatus: `${NS.appc}carriesStatus`,
1157
+ signedByDeviceKey: `${NS.appc}signedByDeviceKey`,
1158
+ madeUnderMandate: `${NS.appc}madeUnderMandate`,
1159
+ presents: `${NS.appc}presents`,
1160
+ nullifierValue: `${NS.appc}nullifierValue`,
1161
+ nullifierGrade: `${NS.appc}nullifierGrade`,
1162
+ statusOf: `${NS.appc}statusOf`,
1163
+ statusSequence: `${NS.appc}statusSequence`,
1164
+ mandateAudience: `${NS.appc}mandateAudience`,
1165
+ mandatePredicateDigest: `${NS.appc}mandatePredicateDigest`,
1166
+ mandateIssuerKeyId: `${NS.appc}mandateIssuerKeyId`,
1167
+ maxPresentations: `${NS.appc}maxPresentations`,
1168
+ releasedUnder: `${NS.appc}releasedUnder`,
1169
+ releaseOutcome: `${NS.appc}releaseOutcome`,
1170
+ policyAsksPredicate: `${NS.appc}policyAsksPredicate`,
1171
+ requiresNullifier: `${NS.appc}requiresNullifier`,
1172
+ acceptsNullifierGrade: `${NS.appc}acceptsNullifierGrade`,
1173
+ nullifierWindowSeconds: `${NS.appc}nullifierWindowSeconds`,
1174
+ requiresStatus: `${NS.appc}requiresStatus`,
1175
+ statusMaxAgeSeconds: `${NS.appc}statusMaxAgeSeconds`,
1176
+ trustsIssuerFacet: `${NS.appc}trustsIssuerFacet`,
1177
+ verifierPlacement: `${NS.appc}verifierPlacement`,
1178
+ evidenceFacet: `${NS.appc}evidenceFacet`,
1179
+ evidencePredicateDigest: `${NS.appc}evidencePredicateDigest`,
1180
+ evidenceNullifierGrade: `${NS.appc}evidenceNullifierGrade`,
1181
+ evidenceStatusSequence: `${NS.appc}evidenceStatusSequence`,
1182
+ evidencedIn: `${NS.appc}evidencedIn`,
1183
+ proofGrade: `${NS.appc}proofGrade`,
1080
1184
  };
1081
1185
  /** SHACL shape IRIs (C-box).
1082
1186
  *
@@ -1089,6 +1193,15 @@ export const PREDICATE = {
1089
1193
  export const SHAPE = {
1090
1194
  CanonicalAgentId: `${NS.ap}CanonicalAgentIdShape`,
1091
1195
  CredentialFacet: `${NS.apcr}CredentialFacetShape`,
1196
+ // Anonymous credentials (cbox/privacy-credential-shapes.shacl.ttl): a pairwise account names no person; a
1197
+ // presentation answers one request and carries no claim value; a nullifier is scoped and graded; a facet is an
1198
+ // org's or a service's and anchored; a mandate is bounded; evidence names what held. Structure, never permission.
1199
+ PairwiseAccount: `${NS.appc}PairwiseAccountShape`,
1200
+ PrivatePresentation: `${NS.appc}PrivatePresentationShape`,
1201
+ Nullifier: `${NS.appc}NullifierShape`,
1202
+ IssuerKeyFacet: `${NS.appc}IssuerKeyFacetShape`,
1203
+ PresentationMandate: `${NS.appc}PresentationMandateShape`,
1204
+ PredicateAdmissionEvidence: `${NS.appc}PredicateAdmissionEvidenceShape`,
1092
1205
  // Verifiable-content substrate (spec 266) — encodes ADR-0033 R3 (no inline text).
1093
1206
  ContentDescriptor: `${NS.apcnt}ContentDescriptorShape`,
1094
1207
  RegistryEntry: `${NS.apreg}RegistryEntryShape`,