@openvtc/trust-tasks 0.16.10 → 0.17.0

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.
@@ -2,7 +2,7 @@
2
2
  * Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
3
3
  * Source: specs/persona/profile/get/1.0/payload.schema.json
4
4
  */
5
- import type { Attribute, ClaimType, Ext, Profile, ProfileEntry, ProofRung, Provenance, Ulid, ValueType, Version_PersonaV0_1 as Version } from "../../../../_shared/components.js";
5
+ import type { ClaimType, Ext, Profile, ProfileEntry, ProofRung, Provenance, ResolvedClaim, Ulid, ValueType, Version_PersonaV0_1 as Version } from "../../../../_shared/components.js";
6
6
  /**
7
7
  * Read one profile, either as composed (the entries the holder wrote) or as resolved (the claims it would actually present).
8
8
  */
@@ -22,13 +22,15 @@ export interface PersonaProfileGetResponsePayload {
22
22
  /**
23
23
  * Present only when `resolve` was true: the claims this profile would present, in entry order, with overrides applied and pinned versions honoured. A credential-backed claim whose backing could not be re-derived appears carrying `stale`, because a holder inspecting a profile needs to see that it has stopped being fully presentable.
24
24
  *
25
+ * Typed as `ResolvedClaim` rather than `Attribute`: a profile is a projection and may contain `inline` values, which have no pool record and therefore no `attributeId`, `version` or `updatedAt`. The pool record's shape requires all three, so it cannot describe such an entry at all.
26
+ *
25
27
  * @maxItems 256
26
28
  */
27
- resolved?: Attribute[];
29
+ resolved?: ResolvedClaim[];
28
30
  ext?: Ext;
29
31
  }
30
32
  /** Shared definitions this specification references, re-exported under the names it used to declare them with. */
31
- export type { Attribute, ClaimType, Ext, Profile, ProfileEntry, ProofRung, Provenance, Ulid, ValueType, Version };
33
+ export type { ClaimType, Ext, Profile, ProfileEntry, ProofRung, Provenance, ResolvedClaim, Ulid, ValueType, Version };
32
34
  /** Trust Task type URI. */
33
35
  export declare const TYPE_URI: "https://trusttasks.org/spec/persona/profile/get/1.0";
34
36
  /** Stable alias for this specification's request payload shape. */
@@ -83,9 +85,9 @@ export declare const PAYLOAD_SCHEMA: {
83
85
  readonly type: "array";
84
86
  readonly maxItems: 256;
85
87
  readonly items: {
86
- readonly $ref: "#/$defs/Attribute";
88
+ readonly $ref: "#/$defs/ResolvedClaim";
87
89
  };
88
- readonly description: "Present only when `resolve` was true: the claims this profile would present, in entry order, with overrides applied and pinned versions honoured. A credential-backed claim whose backing could not be re-derived appears carrying `stale`, because a holder inspecting a profile needs to see that it has stopped being fully presentable.";
90
+ readonly description: "Present only when `resolve` was true: the claims this profile would present, in entry order, with overrides applied and pinned versions honoured. A credential-backed claim whose backing could not be re-derived appears carrying `stale`, because a holder inspecting a profile needs to see that it has stopped being fully presentable.\n\nTyped as `ResolvedClaim` rather than `Attribute`: a profile is a projection and may contain `inline` values, which have no pool record and therefore no `attributeId`, `version` or `updatedAt`. The pool record's shape requires all three, so it cannot describe such an entry at all.";
89
91
  };
90
92
  readonly ext: {
91
93
  readonly $ref: "#/$defs/Ext";
@@ -102,15 +104,16 @@ export declare const PAYLOAD_SCHEMA: {
102
104
  readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
103
105
  };
104
106
  };
105
- readonly Attribute: {
106
- readonly title: "Attribute";
107
- readonly description: "One atomic fact a holder keeps about themselves. Several attributes MAY share a `type` three phone numbers, a legal name and a preferred namewhich is why `attributeId` is the identity of a fact and `type` is not. The pool is flat and unordered; ordering is a profile's concern.";
107
+ readonly ResolvedClaim: {
108
+ readonly title: "ResolvedClaim";
109
+ readonly description: "One line of a profile AFTER resolution: what the profile would present at this entry, rather than how the entry is written.\n\nDistinct from `Attribute` because a profile is a PROJECTION and may contain values that have no pool record behind them. An `inline` entry is a value the holder keeps in one profile and nowhere else it has no `attributeId`, no `version` and no `updatedAt`, because there is no pool attribute to have them. Describing a resolved profile with the pool record's shape therefore cannot represent one at all, which leaves a maintainer choosing between synthesising an `attributeId` a false claim about where a value lives — and omitting the entry, which returns a profile that appears to present less than it does. Neither is acceptable, so the projection gets its own shape.\n\nThe three pool members are consequently OPTIONAL and their absence is meaningful: it says this value is inline. Their PRESENCE is equally informative — `version` alongside a pinned entry is what lets a holder see that a profile is frozen at v3 while the pool has moved on.";
108
110
  readonly type: "object";
109
111
  readonly additionalProperties: false;
110
- readonly required: readonly ["attributeId", "type", "valueType", "value", "provenance", "version", "updatedAt"];
112
+ readonly required: readonly ["type", "valueType", "provenance"];
111
113
  readonly properties: {
112
114
  readonly attributeId: {
113
115
  readonly $ref: "#/$defs/Ulid";
116
+ readonly description: "The pool attribute this entry resolves against. ABSENT for an `inline` entry, which is the whole distinction this member draws.";
114
117
  };
115
118
  readonly type: {
116
119
  readonly $ref: "#/$defs/ClaimType";
@@ -119,35 +122,33 @@ export declare const PAYLOAD_SCHEMA: {
119
122
  readonly $ref: "#/$defs/ValueType";
120
123
  };
121
124
  readonly value: {
122
- readonly description: "The fact itself, agreeing with `valueType`. Encrypted at rest by the maintainer. Absent when the caller asked for a metadata-only view, and absent when a credential-backed value could not be re-derived — a consumer MUST NOT conflate the two and MUST read `stale` to tell them apart.";
125
+ readonly description: "What this entry would present, with any override applied. Absent when `stale`, because a claim that could not be re-derived MUST NOT be disclosed and MUST NOT be shown as though it would be.";
123
126
  };
124
127
  readonly label: {
125
128
  readonly type: "string";
126
129
  readonly maxLength: 128;
127
- readonly description: "The holder's own words for this attribute, shown in a picker. Never disclosed to a verifier; it is a note to self.";
130
+ readonly description: "The holder's own words, from the override where one is given and from the pool attribute otherwise. Never disclosed to a verifier.";
128
131
  };
129
132
  readonly provenance: {
130
133
  readonly $ref: "#/$defs/Provenance";
131
134
  };
132
135
  readonly stale: {
133
136
  readonly type: "boolean";
134
- readonly description: "Present and true when a `credentialBacked` value could not be re-derived. `staleReason` says why. A maintainer MUST refuse to disclose a stale attribute.";
137
+ readonly description: "Present and true when this entry cannot be presented — a credential-backed value that could not be re-derived, or a pin naming a version the maintainer no longer holds. Surfaced rather than omitted so a holder learns why a disclosure would be short.";
135
138
  };
136
139
  readonly staleReason: {
137
140
  readonly type: "string";
138
141
  readonly enum: readonly ["revoked", "expired", "archived", "deleted", "notFound"];
139
- readonly description: "Why re-derivation failed. Present only alongside `stale`.";
142
+ readonly description: "Why the entry cannot be presented. Present only alongside `stale`.";
140
143
  };
141
144
  readonly version: {
142
145
  readonly $ref: "#/$defs/Version";
143
- };
144
- readonly createdAt: {
145
- readonly type: "string";
146
- readonly format: "date-time";
146
+ readonly description: "The pool attribute's version this entry resolved to — the pinned one for a pinned entry, the current one otherwise. ABSENT for an `inline` entry.";
147
147
  };
148
148
  readonly updatedAt: {
149
149
  readonly type: "string";
150
150
  readonly format: "date-time";
151
+ readonly description: "When the pool attribute behind this entry was last written. ABSENT for an `inline` entry.";
151
152
  };
152
153
  };
153
154
  };
@@ -383,9 +384,9 @@ export declare const RESPONSE_PAYLOAD_SCHEMA: {
383
384
  readonly type: "array";
384
385
  readonly maxItems: 256;
385
386
  readonly items: {
386
- readonly $ref: "#/$defs/Attribute";
387
+ readonly $ref: "#/$defs/ResolvedClaim";
387
388
  };
388
- readonly description: "Present only when `resolve` was true: the claims this profile would present, in entry order, with overrides applied and pinned versions honoured. A credential-backed claim whose backing could not be re-derived appears carrying `stale`, because a holder inspecting a profile needs to see that it has stopped being fully presentable.";
389
+ readonly description: "Present only when `resolve` was true: the claims this profile would present, in entry order, with overrides applied and pinned versions honoured. A credential-backed claim whose backing could not be re-derived appears carrying `stale`, because a holder inspecting a profile needs to see that it has stopped being fully presentable.\n\nTyped as `ResolvedClaim` rather than `Attribute`: a profile is a projection and may contain `inline` values, which have no pool record and therefore no `attributeId`, `version` or `updatedAt`. The pool record's shape requires all three, so it cannot describe such an entry at all.";
389
390
  };
390
391
  readonly ext: {
391
392
  readonly $ref: "#/$defs/Ext";
@@ -402,15 +403,16 @@ export declare const RESPONSE_PAYLOAD_SCHEMA: {
402
403
  readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
403
404
  };
404
405
  };
405
- readonly Attribute: {
406
- readonly title: "Attribute";
407
- readonly description: "One atomic fact a holder keeps about themselves. Several attributes MAY share a `type` three phone numbers, a legal name and a preferred namewhich is why `attributeId` is the identity of a fact and `type` is not. The pool is flat and unordered; ordering is a profile's concern.";
406
+ readonly ResolvedClaim: {
407
+ readonly title: "ResolvedClaim";
408
+ readonly description: "One line of a profile AFTER resolution: what the profile would present at this entry, rather than how the entry is written.\n\nDistinct from `Attribute` because a profile is a PROJECTION and may contain values that have no pool record behind them. An `inline` entry is a value the holder keeps in one profile and nowhere else it has no `attributeId`, no `version` and no `updatedAt`, because there is no pool attribute to have them. Describing a resolved profile with the pool record's shape therefore cannot represent one at all, which leaves a maintainer choosing between synthesising an `attributeId` a false claim about where a value lives — and omitting the entry, which returns a profile that appears to present less than it does. Neither is acceptable, so the projection gets its own shape.\n\nThe three pool members are consequently OPTIONAL and their absence is meaningful: it says this value is inline. Their PRESENCE is equally informative — `version` alongside a pinned entry is what lets a holder see that a profile is frozen at v3 while the pool has moved on.";
408
409
  readonly type: "object";
409
410
  readonly additionalProperties: false;
410
- readonly required: readonly ["attributeId", "type", "valueType", "value", "provenance", "version", "updatedAt"];
411
+ readonly required: readonly ["type", "valueType", "provenance"];
411
412
  readonly properties: {
412
413
  readonly attributeId: {
413
414
  readonly $ref: "#/$defs/Ulid";
415
+ readonly description: "The pool attribute this entry resolves against. ABSENT for an `inline` entry, which is the whole distinction this member draws.";
414
416
  };
415
417
  readonly type: {
416
418
  readonly $ref: "#/$defs/ClaimType";
@@ -419,35 +421,33 @@ export declare const RESPONSE_PAYLOAD_SCHEMA: {
419
421
  readonly $ref: "#/$defs/ValueType";
420
422
  };
421
423
  readonly value: {
422
- readonly description: "The fact itself, agreeing with `valueType`. Encrypted at rest by the maintainer. Absent when the caller asked for a metadata-only view, and absent when a credential-backed value could not be re-derived — a consumer MUST NOT conflate the two and MUST read `stale` to tell them apart.";
424
+ readonly description: "What this entry would present, with any override applied. Absent when `stale`, because a claim that could not be re-derived MUST NOT be disclosed and MUST NOT be shown as though it would be.";
423
425
  };
424
426
  readonly label: {
425
427
  readonly type: "string";
426
428
  readonly maxLength: 128;
427
- readonly description: "The holder's own words for this attribute, shown in a picker. Never disclosed to a verifier; it is a note to self.";
429
+ readonly description: "The holder's own words, from the override where one is given and from the pool attribute otherwise. Never disclosed to a verifier.";
428
430
  };
429
431
  readonly provenance: {
430
432
  readonly $ref: "#/$defs/Provenance";
431
433
  };
432
434
  readonly stale: {
433
435
  readonly type: "boolean";
434
- readonly description: "Present and true when a `credentialBacked` value could not be re-derived. `staleReason` says why. A maintainer MUST refuse to disclose a stale attribute.";
436
+ readonly description: "Present and true when this entry cannot be presented — a credential-backed value that could not be re-derived, or a pin naming a version the maintainer no longer holds. Surfaced rather than omitted so a holder learns why a disclosure would be short.";
435
437
  };
436
438
  readonly staleReason: {
437
439
  readonly type: "string";
438
440
  readonly enum: readonly ["revoked", "expired", "archived", "deleted", "notFound"];
439
- readonly description: "Why re-derivation failed. Present only alongside `stale`.";
441
+ readonly description: "Why the entry cannot be presented. Present only alongside `stale`.";
440
442
  };
441
443
  readonly version: {
442
444
  readonly $ref: "#/$defs/Version";
443
- };
444
- readonly createdAt: {
445
- readonly type: "string";
446
- readonly format: "date-time";
445
+ readonly description: "The pool attribute's version this entry resolved to — the pinned one for a pinned entry, the current one otherwise. ABSENT for an `inline` entry.";
447
446
  };
448
447
  readonly updatedAt: {
449
448
  readonly type: "string";
450
449
  readonly format: "date-time";
450
+ readonly description: "When the pool attribute behind this entry was last written. ABSENT for an `inline` entry.";
451
451
  };
452
452
  };
453
453
  };
@@ -712,9 +712,9 @@ export declare const SPEC: {
712
712
  readonly type: "array";
713
713
  readonly maxItems: 256;
714
714
  readonly items: {
715
- readonly $ref: "#/$defs/Attribute";
715
+ readonly $ref: "#/$defs/ResolvedClaim";
716
716
  };
717
- readonly description: "Present only when `resolve` was true: the claims this profile would present, in entry order, with overrides applied and pinned versions honoured. A credential-backed claim whose backing could not be re-derived appears carrying `stale`, because a holder inspecting a profile needs to see that it has stopped being fully presentable.";
717
+ readonly description: "Present only when `resolve` was true: the claims this profile would present, in entry order, with overrides applied and pinned versions honoured. A credential-backed claim whose backing could not be re-derived appears carrying `stale`, because a holder inspecting a profile needs to see that it has stopped being fully presentable.\n\nTyped as `ResolvedClaim` rather than `Attribute`: a profile is a projection and may contain `inline` values, which have no pool record and therefore no `attributeId`, `version` or `updatedAt`. The pool record's shape requires all three, so it cannot describe such an entry at all.";
718
718
  };
719
719
  readonly ext: {
720
720
  readonly $ref: "#/$defs/Ext";
@@ -731,15 +731,16 @@ export declare const SPEC: {
731
731
  readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
732
732
  };
733
733
  };
734
- readonly Attribute: {
735
- readonly title: "Attribute";
736
- readonly description: "One atomic fact a holder keeps about themselves. Several attributes MAY share a `type` three phone numbers, a legal name and a preferred namewhich is why `attributeId` is the identity of a fact and `type` is not. The pool is flat and unordered; ordering is a profile's concern.";
734
+ readonly ResolvedClaim: {
735
+ readonly title: "ResolvedClaim";
736
+ readonly description: "One line of a profile AFTER resolution: what the profile would present at this entry, rather than how the entry is written.\n\nDistinct from `Attribute` because a profile is a PROJECTION and may contain values that have no pool record behind them. An `inline` entry is a value the holder keeps in one profile and nowhere else it has no `attributeId`, no `version` and no `updatedAt`, because there is no pool attribute to have them. Describing a resolved profile with the pool record's shape therefore cannot represent one at all, which leaves a maintainer choosing between synthesising an `attributeId` a false claim about where a value lives — and omitting the entry, which returns a profile that appears to present less than it does. Neither is acceptable, so the projection gets its own shape.\n\nThe three pool members are consequently OPTIONAL and their absence is meaningful: it says this value is inline. Their PRESENCE is equally informative — `version` alongside a pinned entry is what lets a holder see that a profile is frozen at v3 while the pool has moved on.";
737
737
  readonly type: "object";
738
738
  readonly additionalProperties: false;
739
- readonly required: readonly ["attributeId", "type", "valueType", "value", "provenance", "version", "updatedAt"];
739
+ readonly required: readonly ["type", "valueType", "provenance"];
740
740
  readonly properties: {
741
741
  readonly attributeId: {
742
742
  readonly $ref: "#/$defs/Ulid";
743
+ readonly description: "The pool attribute this entry resolves against. ABSENT for an `inline` entry, which is the whole distinction this member draws.";
743
744
  };
744
745
  readonly type: {
745
746
  readonly $ref: "#/$defs/ClaimType";
@@ -748,35 +749,33 @@ export declare const SPEC: {
748
749
  readonly $ref: "#/$defs/ValueType";
749
750
  };
750
751
  readonly value: {
751
- readonly description: "The fact itself, agreeing with `valueType`. Encrypted at rest by the maintainer. Absent when the caller asked for a metadata-only view, and absent when a credential-backed value could not be re-derived — a consumer MUST NOT conflate the two and MUST read `stale` to tell them apart.";
752
+ readonly description: "What this entry would present, with any override applied. Absent when `stale`, because a claim that could not be re-derived MUST NOT be disclosed and MUST NOT be shown as though it would be.";
752
753
  };
753
754
  readonly label: {
754
755
  readonly type: "string";
755
756
  readonly maxLength: 128;
756
- readonly description: "The holder's own words for this attribute, shown in a picker. Never disclosed to a verifier; it is a note to self.";
757
+ readonly description: "The holder's own words, from the override where one is given and from the pool attribute otherwise. Never disclosed to a verifier.";
757
758
  };
758
759
  readonly provenance: {
759
760
  readonly $ref: "#/$defs/Provenance";
760
761
  };
761
762
  readonly stale: {
762
763
  readonly type: "boolean";
763
- readonly description: "Present and true when a `credentialBacked` value could not be re-derived. `staleReason` says why. A maintainer MUST refuse to disclose a stale attribute.";
764
+ readonly description: "Present and true when this entry cannot be presented — a credential-backed value that could not be re-derived, or a pin naming a version the maintainer no longer holds. Surfaced rather than omitted so a holder learns why a disclosure would be short.";
764
765
  };
765
766
  readonly staleReason: {
766
767
  readonly type: "string";
767
768
  readonly enum: readonly ["revoked", "expired", "archived", "deleted", "notFound"];
768
- readonly description: "Why re-derivation failed. Present only alongside `stale`.";
769
+ readonly description: "Why the entry cannot be presented. Present only alongside `stale`.";
769
770
  };
770
771
  readonly version: {
771
772
  readonly $ref: "#/$defs/Version";
772
- };
773
- readonly createdAt: {
774
- readonly type: "string";
775
- readonly format: "date-time";
773
+ readonly description: "The pool attribute's version this entry resolved to — the pinned one for a pinned entry, the current one otherwise. ABSENT for an `inline` entry.";
776
774
  };
777
775
  readonly updatedAt: {
778
776
  readonly type: "string";
779
777
  readonly format: "date-time";
778
+ readonly description: "When the pool attribute behind this entry was last written. ABSENT for an `inline` entry.";
780
779
  };
781
780
  };
782
781
  };
@@ -1023,9 +1022,9 @@ export declare const RESPONSE_SPEC: {
1023
1022
  readonly type: "array";
1024
1023
  readonly maxItems: 256;
1025
1024
  readonly items: {
1026
- readonly $ref: "#/$defs/Attribute";
1025
+ readonly $ref: "#/$defs/ResolvedClaim";
1027
1026
  };
1028
- readonly description: "Present only when `resolve` was true: the claims this profile would present, in entry order, with overrides applied and pinned versions honoured. A credential-backed claim whose backing could not be re-derived appears carrying `stale`, because a holder inspecting a profile needs to see that it has stopped being fully presentable.";
1027
+ readonly description: "Present only when `resolve` was true: the claims this profile would present, in entry order, with overrides applied and pinned versions honoured. A credential-backed claim whose backing could not be re-derived appears carrying `stale`, because a holder inspecting a profile needs to see that it has stopped being fully presentable.\n\nTyped as `ResolvedClaim` rather than `Attribute`: a profile is a projection and may contain `inline` values, which have no pool record and therefore no `attributeId`, `version` or `updatedAt`. The pool record's shape requires all three, so it cannot describe such an entry at all.";
1029
1028
  };
1030
1029
  readonly ext: {
1031
1030
  readonly $ref: "#/$defs/Ext";
@@ -1042,15 +1041,16 @@ export declare const RESPONSE_SPEC: {
1042
1041
  readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
1043
1042
  };
1044
1043
  };
1045
- readonly Attribute: {
1046
- readonly title: "Attribute";
1047
- readonly description: "One atomic fact a holder keeps about themselves. Several attributes MAY share a `type` three phone numbers, a legal name and a preferred namewhich is why `attributeId` is the identity of a fact and `type` is not. The pool is flat and unordered; ordering is a profile's concern.";
1044
+ readonly ResolvedClaim: {
1045
+ readonly title: "ResolvedClaim";
1046
+ readonly description: "One line of a profile AFTER resolution: what the profile would present at this entry, rather than how the entry is written.\n\nDistinct from `Attribute` because a profile is a PROJECTION and may contain values that have no pool record behind them. An `inline` entry is a value the holder keeps in one profile and nowhere else it has no `attributeId`, no `version` and no `updatedAt`, because there is no pool attribute to have them. Describing a resolved profile with the pool record's shape therefore cannot represent one at all, which leaves a maintainer choosing between synthesising an `attributeId` a false claim about where a value lives — and omitting the entry, which returns a profile that appears to present less than it does. Neither is acceptable, so the projection gets its own shape.\n\nThe three pool members are consequently OPTIONAL and their absence is meaningful: it says this value is inline. Their PRESENCE is equally informative — `version` alongside a pinned entry is what lets a holder see that a profile is frozen at v3 while the pool has moved on.";
1048
1047
  readonly type: "object";
1049
1048
  readonly additionalProperties: false;
1050
- readonly required: readonly ["attributeId", "type", "valueType", "value", "provenance", "version", "updatedAt"];
1049
+ readonly required: readonly ["type", "valueType", "provenance"];
1051
1050
  readonly properties: {
1052
1051
  readonly attributeId: {
1053
1052
  readonly $ref: "#/$defs/Ulid";
1053
+ readonly description: "The pool attribute this entry resolves against. ABSENT for an `inline` entry, which is the whole distinction this member draws.";
1054
1054
  };
1055
1055
  readonly type: {
1056
1056
  readonly $ref: "#/$defs/ClaimType";
@@ -1059,35 +1059,33 @@ export declare const RESPONSE_SPEC: {
1059
1059
  readonly $ref: "#/$defs/ValueType";
1060
1060
  };
1061
1061
  readonly value: {
1062
- readonly description: "The fact itself, agreeing with `valueType`. Encrypted at rest by the maintainer. Absent when the caller asked for a metadata-only view, and absent when a credential-backed value could not be re-derived — a consumer MUST NOT conflate the two and MUST read `stale` to tell them apart.";
1062
+ readonly description: "What this entry would present, with any override applied. Absent when `stale`, because a claim that could not be re-derived MUST NOT be disclosed and MUST NOT be shown as though it would be.";
1063
1063
  };
1064
1064
  readonly label: {
1065
1065
  readonly type: "string";
1066
1066
  readonly maxLength: 128;
1067
- readonly description: "The holder's own words for this attribute, shown in a picker. Never disclosed to a verifier; it is a note to self.";
1067
+ readonly description: "The holder's own words, from the override where one is given and from the pool attribute otherwise. Never disclosed to a verifier.";
1068
1068
  };
1069
1069
  readonly provenance: {
1070
1070
  readonly $ref: "#/$defs/Provenance";
1071
1071
  };
1072
1072
  readonly stale: {
1073
1073
  readonly type: "boolean";
1074
- readonly description: "Present and true when a `credentialBacked` value could not be re-derived. `staleReason` says why. A maintainer MUST refuse to disclose a stale attribute.";
1074
+ readonly description: "Present and true when this entry cannot be presented — a credential-backed value that could not be re-derived, or a pin naming a version the maintainer no longer holds. Surfaced rather than omitted so a holder learns why a disclosure would be short.";
1075
1075
  };
1076
1076
  readonly staleReason: {
1077
1077
  readonly type: "string";
1078
1078
  readonly enum: readonly ["revoked", "expired", "archived", "deleted", "notFound"];
1079
- readonly description: "Why re-derivation failed. Present only alongside `stale`.";
1079
+ readonly description: "Why the entry cannot be presented. Present only alongside `stale`.";
1080
1080
  };
1081
1081
  readonly version: {
1082
1082
  readonly $ref: "#/$defs/Version";
1083
- };
1084
- readonly createdAt: {
1085
- readonly type: "string";
1086
- readonly format: "date-time";
1083
+ readonly description: "The pool attribute's version this entry resolved to — the pinned one for a pinned entry, the current one otherwise. ABSENT for an `inline` entry.";
1087
1084
  };
1088
1085
  readonly updatedAt: {
1089
1086
  readonly type: "string";
1090
1087
  readonly format: "date-time";
1088
+ readonly description: "When the pool attribute behind this entry was last written. ABSENT for an `inline` entry.";
1091
1089
  };
1092
1090
  };
1093
1091
  };
@@ -1 +1 @@
1
- {"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../src/persona/profile/get/1.0/payload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../../src/persona/profile/get/1.0/payload.ts"],"names":[],"mappings":"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"}
@@ -56,9 +56,9 @@ export const PAYLOAD_SCHEMA = {
56
56
  "type": "array",
57
57
  "maxItems": 256,
58
58
  "items": {
59
- "$ref": "#/$defs/Attribute"
59
+ "$ref": "#/$defs/ResolvedClaim"
60
60
  },
61
- "description": "Present only when `resolve` was true: the claims this profile would present, in entry order, with overrides applied and pinned versions honoured. A credential-backed claim whose backing could not be re-derived appears carrying `stale`, because a holder inspecting a profile needs to see that it has stopped being fully presentable."
61
+ "description": "Present only when `resolve` was true: the claims this profile would present, in entry order, with overrides applied and pinned versions honoured. A credential-backed claim whose backing could not be re-derived appears carrying `stale`, because a holder inspecting a profile needs to see that it has stopped being fully presentable.\n\nTyped as `ResolvedClaim` rather than `Attribute`: a profile is a projection and may contain `inline` values, which have no pool record and therefore no `attributeId`, `version` or `updatedAt`. The pool record's shape requires all three, so it cannot describe such an entry at all."
62
62
  },
63
63
  "ext": {
64
64
  "$ref": "#/$defs/Ext"
@@ -75,23 +75,20 @@ export const PAYLOAD_SCHEMA = {
75
75
  "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
76
76
  }
77
77
  },
78
- "Attribute": {
79
- "title": "Attribute",
80
- "description": "One atomic fact a holder keeps about themselves. Several attributes MAY share a `type` three phone numbers, a legal name and a preferred namewhich is why `attributeId` is the identity of a fact and `type` is not. The pool is flat and unordered; ordering is a profile's concern.",
78
+ "ResolvedClaim": {
79
+ "title": "ResolvedClaim",
80
+ "description": "One line of a profile AFTER resolution: what the profile would present at this entry, rather than how the entry is written.\n\nDistinct from `Attribute` because a profile is a PROJECTION and may contain values that have no pool record behind them. An `inline` entry is a value the holder keeps in one profile and nowhere else it has no `attributeId`, no `version` and no `updatedAt`, because there is no pool attribute to have them. Describing a resolved profile with the pool record's shape therefore cannot represent one at all, which leaves a maintainer choosing between synthesising an `attributeId` a false claim about where a value lives — and omitting the entry, which returns a profile that appears to present less than it does. Neither is acceptable, so the projection gets its own shape.\n\nThe three pool members are consequently OPTIONAL and their absence is meaningful: it says this value is inline. Their PRESENCE is equally informative — `version` alongside a pinned entry is what lets a holder see that a profile is frozen at v3 while the pool has moved on.",
81
81
  "type": "object",
82
82
  "additionalProperties": false,
83
83
  "required": [
84
- "attributeId",
85
84
  "type",
86
85
  "valueType",
87
- "value",
88
- "provenance",
89
- "version",
90
- "updatedAt"
86
+ "provenance"
91
87
  ],
92
88
  "properties": {
93
89
  "attributeId": {
94
- "$ref": "#/$defs/Ulid"
90
+ "$ref": "#/$defs/Ulid",
91
+ "description": "The pool attribute this entry resolves against. ABSENT for an `inline` entry, which is the whole distinction this member draws."
95
92
  },
96
93
  "type": {
97
94
  "$ref": "#/$defs/ClaimType"
@@ -100,19 +97,19 @@ export const PAYLOAD_SCHEMA = {
100
97
  "$ref": "#/$defs/ValueType"
101
98
  },
102
99
  "value": {
103
- "description": "The fact itself, agreeing with `valueType`. Encrypted at rest by the maintainer. Absent when the caller asked for a metadata-only view, and absent when a credential-backed value could not be re-derived — a consumer MUST NOT conflate the two and MUST read `stale` to tell them apart."
100
+ "description": "What this entry would present, with any override applied. Absent when `stale`, because a claim that could not be re-derived MUST NOT be disclosed and MUST NOT be shown as though it would be."
104
101
  },
105
102
  "label": {
106
103
  "type": "string",
107
104
  "maxLength": 128,
108
- "description": "The holder's own words for this attribute, shown in a picker. Never disclosed to a verifier; it is a note to self."
105
+ "description": "The holder's own words, from the override where one is given and from the pool attribute otherwise. Never disclosed to a verifier."
109
106
  },
110
107
  "provenance": {
111
108
  "$ref": "#/$defs/Provenance"
112
109
  },
113
110
  "stale": {
114
111
  "type": "boolean",
115
- "description": "Present and true when a `credentialBacked` value could not be re-derived. `staleReason` says why. A maintainer MUST refuse to disclose a stale attribute."
112
+ "description": "Present and true when this entry cannot be presented — a credential-backed value that could not be re-derived, or a pin naming a version the maintainer no longer holds. Surfaced rather than omitted so a holder learns why a disclosure would be short."
116
113
  },
117
114
  "staleReason": {
118
115
  "type": "string",
@@ -123,18 +120,16 @@ export const PAYLOAD_SCHEMA = {
123
120
  "deleted",
124
121
  "notFound"
125
122
  ],
126
- "description": "Why re-derivation failed. Present only alongside `stale`."
123
+ "description": "Why the entry cannot be presented. Present only alongside `stale`."
127
124
  },
128
125
  "version": {
129
- "$ref": "#/$defs/Version"
130
- },
131
- "createdAt": {
132
- "type": "string",
133
- "format": "date-time"
126
+ "$ref": "#/$defs/Version",
127
+ "description": "The pool attribute's version this entry resolved to — the pinned one for a pinned entry, the current one otherwise. ABSENT for an `inline` entry."
134
128
  },
135
129
  "updatedAt": {
136
130
  "type": "string",
137
- "format": "date-time"
131
+ "format": "date-time",
132
+ "description": "When the pool attribute behind this entry was last written. ABSENT for an `inline` entry."
138
133
  }
139
134
  }
140
135
  },
@@ -426,9 +421,9 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
426
421
  "type": "array",
427
422
  "maxItems": 256,
428
423
  "items": {
429
- "$ref": "#/$defs/Attribute"
424
+ "$ref": "#/$defs/ResolvedClaim"
430
425
  },
431
- "description": "Present only when `resolve` was true: the claims this profile would present, in entry order, with overrides applied and pinned versions honoured. A credential-backed claim whose backing could not be re-derived appears carrying `stale`, because a holder inspecting a profile needs to see that it has stopped being fully presentable."
426
+ "description": "Present only when `resolve` was true: the claims this profile would present, in entry order, with overrides applied and pinned versions honoured. A credential-backed claim whose backing could not be re-derived appears carrying `stale`, because a holder inspecting a profile needs to see that it has stopped being fully presentable.\n\nTyped as `ResolvedClaim` rather than `Attribute`: a profile is a projection and may contain `inline` values, which have no pool record and therefore no `attributeId`, `version` or `updatedAt`. The pool record's shape requires all three, so it cannot describe such an entry at all."
432
427
  },
433
428
  "ext": {
434
429
  "$ref": "#/$defs/Ext"
@@ -445,23 +440,20 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
445
440
  "pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
446
441
  }
447
442
  },
448
- "Attribute": {
449
- "title": "Attribute",
450
- "description": "One atomic fact a holder keeps about themselves. Several attributes MAY share a `type` three phone numbers, a legal name and a preferred namewhich is why `attributeId` is the identity of a fact and `type` is not. The pool is flat and unordered; ordering is a profile's concern.",
443
+ "ResolvedClaim": {
444
+ "title": "ResolvedClaim",
445
+ "description": "One line of a profile AFTER resolution: what the profile would present at this entry, rather than how the entry is written.\n\nDistinct from `Attribute` because a profile is a PROJECTION and may contain values that have no pool record behind them. An `inline` entry is a value the holder keeps in one profile and nowhere else it has no `attributeId`, no `version` and no `updatedAt`, because there is no pool attribute to have them. Describing a resolved profile with the pool record's shape therefore cannot represent one at all, which leaves a maintainer choosing between synthesising an `attributeId` a false claim about where a value lives — and omitting the entry, which returns a profile that appears to present less than it does. Neither is acceptable, so the projection gets its own shape.\n\nThe three pool members are consequently OPTIONAL and their absence is meaningful: it says this value is inline. Their PRESENCE is equally informative — `version` alongside a pinned entry is what lets a holder see that a profile is frozen at v3 while the pool has moved on.",
451
446
  "type": "object",
452
447
  "additionalProperties": false,
453
448
  "required": [
454
- "attributeId",
455
449
  "type",
456
450
  "valueType",
457
- "value",
458
- "provenance",
459
- "version",
460
- "updatedAt"
451
+ "provenance"
461
452
  ],
462
453
  "properties": {
463
454
  "attributeId": {
464
- "$ref": "#/$defs/Ulid"
455
+ "$ref": "#/$defs/Ulid",
456
+ "description": "The pool attribute this entry resolves against. ABSENT for an `inline` entry, which is the whole distinction this member draws."
465
457
  },
466
458
  "type": {
467
459
  "$ref": "#/$defs/ClaimType"
@@ -470,19 +462,19 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
470
462
  "$ref": "#/$defs/ValueType"
471
463
  },
472
464
  "value": {
473
- "description": "The fact itself, agreeing with `valueType`. Encrypted at rest by the maintainer. Absent when the caller asked for a metadata-only view, and absent when a credential-backed value could not be re-derived — a consumer MUST NOT conflate the two and MUST read `stale` to tell them apart."
465
+ "description": "What this entry would present, with any override applied. Absent when `stale`, because a claim that could not be re-derived MUST NOT be disclosed and MUST NOT be shown as though it would be."
474
466
  },
475
467
  "label": {
476
468
  "type": "string",
477
469
  "maxLength": 128,
478
- "description": "The holder's own words for this attribute, shown in a picker. Never disclosed to a verifier; it is a note to self."
470
+ "description": "The holder's own words, from the override where one is given and from the pool attribute otherwise. Never disclosed to a verifier."
479
471
  },
480
472
  "provenance": {
481
473
  "$ref": "#/$defs/Provenance"
482
474
  },
483
475
  "stale": {
484
476
  "type": "boolean",
485
- "description": "Present and true when a `credentialBacked` value could not be re-derived. `staleReason` says why. A maintainer MUST refuse to disclose a stale attribute."
477
+ "description": "Present and true when this entry cannot be presented — a credential-backed value that could not be re-derived, or a pin naming a version the maintainer no longer holds. Surfaced rather than omitted so a holder learns why a disclosure would be short."
486
478
  },
487
479
  "staleReason": {
488
480
  "type": "string",
@@ -493,18 +485,16 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
493
485
  "deleted",
494
486
  "notFound"
495
487
  ],
496
- "description": "Why re-derivation failed. Present only alongside `stale`."
488
+ "description": "Why the entry cannot be presented. Present only alongside `stale`."
497
489
  },
498
490
  "version": {
499
- "$ref": "#/$defs/Version"
500
- },
501
- "createdAt": {
502
- "type": "string",
503
- "format": "date-time"
491
+ "$ref": "#/$defs/Version",
492
+ "description": "The pool attribute's version this entry resolved to — the pinned one for a pinned entry, the current one otherwise. ABSENT for an `inline` entry."
504
493
  },
505
494
  "updatedAt": {
506
495
  "type": "string",
507
- "format": "date-time"
496
+ "format": "date-time",
497
+ "description": "When the pool attribute behind this entry was last written. ABSENT for an `inline` entry."
508
498
  }
509
499
  }
510
500
  },