Skip to content

chore(persona): take trust-tasks 0.17.1, where a resolved entry is a projection - #167

Merged
stormer78 merged 1 commit into
mainfrom
chore/trust-tasks-0.17
Sep 7, 2026
Merged

chore(persona): take trust-tasks 0.17.1, where a resolved entry is a projection#167
stormer78 merged 1 commit into
mainfrom
chore/trust-tasks-0.17

Conversation

@stormer78

Copy link
Copy Markdown
Contributor

Brings the TypeScript PNM library up to the current Trust Tasks release after the persona/profile work.

What moved

  • @openvtc/trust-tasks 0.16.11 -> 0.17.1 (root + packages/core)
  • packages/core/task-surface.json resynced to vta-sdk 0.33.0 (was 0.32.3)

The change that reaches a caller

persona/profile/get's resolved array is retyped from the pool Attribute to ResolvedClaim (trustoverip/dtgwg-trust-tasks-tf#370). attributeId, version and updatedAt are OPTIONAL on a resolved entry, and their absence is the whole distinction: it says the value is inline, held in one profile with no pool record behind it.

Under the old type all three were required, so a conforming agent could not describe such a profile at all — it had to choose 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.

No source change was needed. personaProfileGet returns the generated response type, and the console's ResolvedProfile was already written against the corrected shape: it renders "held only here" on claim.attributeId === undefined, a branch the old type made unreachable by construction.

The test

Keyed on the generated schema, not on this library's behaviour — it asserts resolved.items is #/$defs/ResolvedClaim and that the three pool members are absent from its required. Checked against 0.16.11, where both assertions fail. Asserting the console's rendering instead would have passed against either version, which is the shape VTI#1258 got wrong.

What did not move

The surface is the same 226 URIs at vta-sdk 0.33.0 as at 0.32.3 — 24 of them persona/*, all 24 implemented here, coverage unchanged at 187 of 207 families.

VTI's breaking ACL change in that window (OpenVTC/verifiable-trust-infrastructure#1279) narrows what an ACL entry may do without adding a task or a schema member: capabilities travel in ext as org.openvtc.capabilities. This library does not yet set them and the surface check cannot see them — flagged in the coverage note, not addressed here.

Verification

npm run build and npm test green across the workspace: 788 tests, 0 failures.

…projection

`@openvtc/trust-tasks` 0.16.11 -> 0.17.1, and `task-surface.json` resynced to
vta-sdk 0.33.0.

The change that reaches a caller is `persona/profile/get`'s `resolved` array,
retyped from the pool `Attribute` to `ResolvedClaim` (dtgwg-trust-tasks-tf#370).
`attributeId`, `version` and `updatedAt` are OPTIONAL on a resolved entry, and
their absence is the whole distinction: it says the value is `inline`, held in
one profile with no pool record behind it. Under the old type all three were
required, so a conforming agent could not describe such a profile at all — it
had to choose 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.

No source change was needed. `personaProfileGet` returns the generated response
type, and the console's `ResolvedProfile` was already written against the
corrected shape — it renders "held only here" on `claim.attributeId ===
undefined`, a branch the old type made unreachable by construction.

So the test keys on the generated schema, not on this library's behaviour: it
asserts `resolved.items` is `#/$defs/ResolvedClaim` and that the three pool
members are absent from its `required`. Checked against 0.16.11, where both
assertions fail. Asserting the console's rendering instead would have passed
against either version, which is the shape VTI#1258 got wrong.

The surface itself did not move: the same 226 URIs at vta-sdk 0.33.0 as at
0.32.3, 24 of them `persona/*`, all 24 implemented here. VTI's breaking ACL
change in that window (#1279) narrows what an entry may do without adding a
task or a schema member — capabilities travel in `ext` as
`org.openvtc.capabilities`, which this library does not yet set, and which the
surface check cannot see.

Signed-off-by: Glenn Gore <glenn.g@affinidi.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant