Skip to content

chore(deps): take vta-sdk 0.32, TDK 0.10 and the trust-tasks 0.17 trql-client - #33

Merged
stormer78 merged 2 commits into
mainfrom
chore/deps-refresh-2026-08
Aug 30, 2026
Merged

chore(deps): take vta-sdk 0.32, TDK 0.10 and the trust-tasks 0.17 trql-client#33
stormer78 merged 2 commits into
mainfrom
chore/deps-refresh-2026-08

Conversation

@stormer78

@stormer78 stormer78 commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Part of the stack-wide refresh onto the newly published trust-tasks / TDK / VTA-SDK releases.

crate from to
vta-sdk 0.27 0.32
affinidi-tdk 0.8.5 0.10
trql-client 0.14 (crates.io) 0.15.0 @ affinidi/affinidi-trust-registry-rs#128

No source change in this workspace.

vta-sdk

A follow, not a choice. vta-sdk is 0.x, so "0.31" excludes 0.32, and a consumer that takes 0.32 while this crate asks for 0.31 ends up with two copies of vta-sdk in one graph — which do not unify, so the workspace stops building. vti-common re-exports vta_sdk::acl::* as its own public API, so this is where that bites.

This crate is the edge that decides when OpenVTC may move, and it has now been the thing in the way five times: 0.23, 0.25, 0.27, 0.31, 0.32. The bump exists so the ceiling moves.

Nothing here needs anything 0.32 added — did-git-sign reaches the VTA through connect_auto and takes display names; ClientIdentity grew a verification_method member (VTI #1193) and nothing in this workspace names that type — so the change is the manifest and the lockfile.

No other requirement moves with it: vta-sdk 0.32 keeps trust-tasks-rs 0.17, affinidi-tdk 0.10 and affinidi-messaging-sdk 0.21, the same line this workspace already resolves.

trql-client goes to a git rev, not to 0.14

0.14.0 is still the registry's latest published crate and it declares trust-tasks-rs ^0.9, while vta-sdk declares ^0.17. Taking it would have put 0.9.0 and 0.17.3 in the tree together and kept the duplicate-copy check narrowed for a third release running.

affinidi/affinidi-trust-registry-rs#128 is the move that ends that — the whole registry workspace onto trust-tasks 0.17, TDK 0.10 and vta-sdk 0.31 — and it is green on the registry's own pipeline, so its head is a better dependency than the stale release. Pinned by rev (22bb9a3), never by branch, so a further push to that PR cannot silently change what this builds against.

That PR has since moved to ec0030f (taking vta-sdk 0.31.1 for a DIDComm client-identity fix), and the rev here deliberately stays put: trql-client does not depend on vta-sdk at all, and that commit touches only the registry workspace's own manifest and lockfile, so trql-client is identical at both revs and re-pinning would be churn with no effect on the resolved graph.

Checks

  • cargo tree -i vta-sdk → one row, 0.32.0, from did-git-sign and verify-trust
  • cargo tree -d -e normal,build → no trust-tasks-rs, no vta-sdk, no trql-client, no affinidi-*
  • cargo tree -i trust-tasks-rs → single 0.17.3, with trql-client, vta-sdk and affinidi-messaging-sdk all under it

Remaining duplicates in the tree are the pre-existing RustCrypto 0.x/1.0 split under pgp 0.20.

The one cost, and how it unwinds

cargo publish rejects git dependencies, so a vX.Y.Z tag would fail publish.yml while this line stands. Nothing on the PR path is affected — CI here runs fmt/clippy/check/MSRV/test only, and there is no cargo-deny sources check to trip on a git source.

Do not cut a release until #128 is merged and published. At that point this becomes a one-line change back to trql-client = "0.15", and release proceeds normally. The requirement comment says so in place.

Testing

cargo check --workspace --all-targets --all-features clean; cargo clippy --workspace --all-targets -D warnings clean; cargo fmt --all --check clean; cargo test --workspace — 116 passing.

…l-client

Follows the published VTA line, which is the standing obligation this
workspace carries: OpenVTC depends on both did-git-sign and vta-sdk
directly, so a stale requirement here puts a second vta-sdk — and with
it a second copy of the `vti-common`-re-exported ACL types — in its
binary. Four minors, no source change.

trql-client moves with it, to the head of affinidi-trust-registry-rs#128
rather than to a crates.io version. 0.14.0 is still the registry's latest
published crate and declares trust-tasks-rs ^0.9 while vta-sdk 0.31
declares ^0.17, so taking it would have put 0.9.0 and 0.17.3 in the tree
together and left the duplicate-copy check narrowed for a third release
running. #128 is the move that ends that — the whole registry workspace
onto trust-tasks 0.17, TDK 0.10 and vta-sdk 0.31, the same line as here —
and it is green on the registry's own pipeline, so the branch head is a
better dependency than the stale release. Pinned by rev, not branch.

The check is unnarrowed again and passes: `cargo tree -d -e normal,build`
lists no trust-tasks-rs and no vta-sdk, and `cargo tree -i vta-sdk`
resolves a single node. Remaining duplicates are the pre-existing
RustCrypto 0.x/1.0 split under pgp 0.20.

The one cost is that `cargo publish` rejects git dependencies, so a
`vX.Y.Z` tag would fail publish.yml while this stands. CI on the PR path
is unaffected. Swap back to `trql-client = "0.15"` once the registry
publishes it, and release from there.

Testing. cargo check --workspace --all-targets --all-features clean,
clippy clean, fmt clean, cargo test --workspace — 116 passing.

Signed-off-by: Glenn Gore <glenn.g@affinidi.com>
@stormer78
stormer78 force-pushed the chore/deps-refresh-2026-08 branch from a6fd987 to 462032c Compare August 28, 2026 14:38
@stormer78 stormer78 changed the title chore(deps): take vta-sdk 0.31 and affinidi-tdk 0.10 chore(deps): take vta-sdk 0.31, TDK 0.10 and the trust-tasks 0.17 trql-client Aug 28, 2026
stormer78 added a commit to OpenVTC/openvtc that referenced this pull request Aug 28, 2026
Takes the newly published stack: affinidi-tdk 0.8.5 -> 0.10,
affinidi-messaging-sdk 0.19 -> 0.21, trust-tasks-rs 0.11 -> 0.17,
trust-tasks-capability-client 0.9 -> 0.17, vta-sdk 0.27 -> 0.31, and the
dev-only vta-service 0.19 -> 0.22 (0.19 pins vta-sdk 0.28 and vta-keys
0.2, which is what the dev graph's second vta-sdk was made of; the note
against that requirement is a standing obligation, and this discharges
it again).

Two source changes:

- `parse_envelope_reply` in trust-tasks-capability-client 0.17 folded
  the SPEC §4.9 correlation check into the parse and now takes the
  thread id the caller is waiting on. The inbound dispatch is a fan-in
  point that waits on nothing in particular, so it reads the document
  first and classifies against the document's own `threadId`. The
  correlation that matters is unchanged: `apply_capability_replies`
  still matches the reply to the open view's `pending_thid` and drops
  anything else.
- `JoinRequestStatusResponseBody` gained `code`, `reason` and
  `decided_at` (vta-sdk 0.31) — refusal detail carried on a `rejected`
  status. The e2e helper does not exercise a rejection, so it sends
  none.

NOT MERGEABLE until did-git-sign publishes on vta-sdk 0.31
(OpenVTC/verifiable-git-infrastructure#33): 0.4.6 pins vta-sdk 0.27, and
that edge alone re-splits vta-sdk, affinidi-tdk, affinidi-messaging-sdk
and trust-tasks-rs into two copies each. Verified green against a local
path patch of did-git-sign: workspace checks clean, 910 tests passing.

Claude-Session: https://claude.ai/code/session_01H6NJ4J9ngaNUXgRd4BFjVz
Signed-off-by: Glenn Gore <glenn.g@affinidi.com>
stormer78 added a commit to OpenVTC/openvtc that referenced this pull request Aug 28, 2026
Takes the newly published stack: affinidi-tdk 0.8.5 -> 0.10,
affinidi-messaging-sdk 0.19 -> 0.21, trust-tasks-rs 0.11 -> 0.17,
trust-tasks-capability-client 0.9 -> 0.17, vta-sdk 0.27 -> 0.31, and the
dev-only vta-service 0.19 -> 0.22 (0.19 pins vta-sdk 0.28 and vta-keys
0.2, which is what the dev graph's second vta-sdk was made of; the note
against that requirement is a standing obligation, and this discharges
it again).

Two source changes:

- `parse_envelope_reply` in trust-tasks-capability-client 0.17 folded
  the SPEC §4.9 correlation check into the parse and now takes the
  thread id the caller is waiting on. The inbound dispatch is a fan-in
  point that waits on nothing in particular, so it reads the document
  first and classifies against the document's own `threadId`. The
  correlation that matters is unchanged: `apply_capability_replies`
  still matches the reply to the open view's `pending_thid` and drops
  anything else.
- `JoinRequestStatusResponseBody` gained `code`, `reason` and
  `decided_at` (vta-sdk 0.31) — refusal detail carried on a `rejected`
  status. The e2e helper does not exercise a rejection, so it sends
  none.

NOT MERGEABLE until did-git-sign publishes on vta-sdk 0.31
(OpenVTC/verifiable-git-infrastructure#33): 0.4.6 pins vta-sdk 0.27, and
that edge alone re-splits vta-sdk, affinidi-tdk, affinidi-messaging-sdk
and trust-tasks-rs into two copies each. Verified green against a local
path patch of did-git-sign: workspace checks clean, 910 tests passing.

Signed-off-by: Glenn Gore <glenn.g@affinidi.com>
stormer78 added a commit to OpenVTC/openvtc that referenced this pull request Aug 28, 2026
Takes the newly published stack: affinidi-tdk 0.8.5 -> 0.10,
affinidi-messaging-sdk 0.19 -> 0.21, trust-tasks-rs 0.11 -> 0.17,
trust-tasks-capability-client 0.9 -> 0.17, vta-sdk 0.27 -> 0.31, the
dev-only vta-service 0.19 -> 0.22 and affinidi-messaging-test-mediator
0.2 -> 0.4, plus argon2 0.5 -> 0.6 — after which no direct requirement in
this workspace is behind its latest release except the two that are held
deliberately (x25519-dalek at 2.x by the OpenPGP stack, rand at 0.8 by
the crypto stack), both with the reason written against the line.

argon2 derives key material, so it is worth saying why the bump is safe:
Argon2id is a specified KDF and `derive_argon2_key` calls
`hash_password_into`, its plain implementation. Same algorithm, version
and params in, same 32 bytes out — the unlock code and the
`ProtectedConfig` seed are byte-identical across it and every existing
config still opens. What 0.6 breaks is the `password-hash` 0.6 PHC-string
surface, which we do not touch.

## did-git-sign comes from VGI#33's head, not from crates.io

`did-git-sign` 0.4.6 is the latest published release and requires
`vta-sdk ^0.27`. That single edge re-splits vta-sdk, affinidi-tdk,
affinidi-messaging-sdk and trust-tasks-rs into two copies each — and it
does not merely fail to unify types, it fails to compile: vta-keys 0.2.9
does not build against vti-common 0.15.

OpenVTC/verifiable-git-infrastructure#33 is the move that ends it — the
VGI workspace onto vta-sdk 0.31 and TDK 0.10, no source change, green on
its own pipeline. Rather than block on the publish, a `[patch.crates-io]`
entry redirects `did-git-sign` (and its path-dep `vgi-core`) to that PR's
head. The requirement in `openvtc/Cargo.toml` still names 0.4.6, which is
the version VGI carries at that rev; the patch decides only where 0.4.6
comes from. Pinned by rev, never by branch, so a further push to that PR
cannot silently change what this builds against — the same discipline VGI
itself applies to `trql-client`. Both git sources are allow-listed in
`deny.toml`, and `publish = false` here, so a git source costs this
workspace nothing on its own release path.

Delete the patch block and raise the floor to 0.4.7 once VGI publishes.
That is the fourth consecutive cycle this obligation has come due, so the
note is written as the rule rather than as this version's incident.

With it, `cargo tree -i vta-sdk` and `cargo tree -i trust-tasks-rs` each
resolve a single node. Remaining duplicates are upstream RustCrypto 0.x /
1.0 splits no line here controls.

## Source changes

- `parse_envelope_reply` in trust-tasks-capability-client 0.17 folded
  the SPEC §4.9 correlation check into the parse and now takes the
  thread id the caller is waiting on. The inbound dispatch is a fan-in
  point that waits on nothing in particular, so it reads the document
  first and classifies against the document's own `threadId`. The
  correlation that matters is unchanged: `apply_capability_replies`
  still matches the reply to the open view's `pending_thid` and drops
  anything else.
- `JoinRequestStatusResponseBody` gained `code`, `reason` and
  `decided_at` (vta-sdk 0.31) — refusal detail carried on a `rejected`
  status. The e2e helper does not exercise a rejection, so it sends none.
- vta-sdk 0.31 stopped accepting `VtaClient::new` + `set_token` for a
  client that dispatches Trust Tasks. A bearer token authenticates the
  *connection*; SPEC §7.2 items 5b and 7a want an in-band `recipient` and
  a document `proof`, which the client can only produce from a
  `ClientIdentity`. The setup wizard's REST arm was hand-rolling exactly
  that shape — it authenticates separately because it needs the token
  itself to cache — so the very next dispatch on that client, the context
  probe, would have failed with "authenticated but carries no
  ClientIdentity". It now builds the client the way `connect_auto`'s REST
  arm does. The two `mockvta_bootstrap_e2e` clients had the same shape
  and are the reason this was caught: they are `#[ignore]`d, so only the
  coverage job (`--include-ignored`) runs them, and they now authenticate
  as a real `did:key` whose token is minted for that same DID — item 6
  rejects a document whose in-band issuer disagrees with the identity the
  transport authenticated as.
- Rust 1.98's clippy flags the nested `if let` in the envelope dispatch
  as `collapsible_if`; it is a let chain now, which edition 2024 has had
  since well before the 1.95 MSRV.

## Testing

cargo fmt / clippy (on 1.98, the toolchain that flagged the lint) / doc
with `-D warnings` / cargo-deny (advisories, licenses, bans, sources) /
`cargo check` on the 1.95 MSRV / `cargo bench --no-run` all clean.
`cargo test --workspace --tests -- --include-ignored` — 921 passing, 0
failed, including the three MockVta bootstrap e2es that the coverage job
runs. `cargo test --workspace --no-default-features` clean.

Signed-off-by: Glenn Gore <glenn.g@affinidi.com>
Claude-Session: https://claude.ai/code/session_016rR4AnzuwoVXX1MU8aaRKB
stormer78 added a commit to OpenVTC/openvtc that referenced this pull request Aug 28, 2026
Takes the newly published stack: affinidi-tdk 0.8.5 -> 0.10,
affinidi-messaging-sdk 0.19 -> 0.21, trust-tasks-rs 0.11 -> 0.17,
trust-tasks-capability-client 0.9 -> 0.17, vta-sdk 0.27 -> 0.31, the
dev-only vta-service 0.19 -> 0.22 and affinidi-messaging-test-mediator
0.2 -> 0.4, plus argon2 0.5 -> 0.6 — after which no direct requirement in
this workspace is behind its latest release except the two that are held
deliberately (x25519-dalek at 2.x by the OpenPGP stack, rand at 0.8 by
the crypto stack), both with the reason written against the line.

argon2 derives key material, so it is worth saying why the bump is safe:
Argon2id is a specified KDF and `derive_argon2_key` calls
`hash_password_into`, its plain implementation. Same algorithm, version
and params in, same 32 bytes out — the unlock code and the
`ProtectedConfig` seed are byte-identical across it and every existing
config still opens. What 0.6 breaks is the `password-hash` 0.6 PHC-string
surface, which we do not touch.

## did-git-sign comes from VGI#33's head, not from crates.io

`did-git-sign` 0.4.6 is the latest published release and requires
`vta-sdk ^0.27`. That single edge re-splits vta-sdk, affinidi-tdk,
affinidi-messaging-sdk and trust-tasks-rs into two copies each — and it
does not merely fail to unify types, it fails to compile: vta-keys 0.2.9
does not build against vti-common 0.15.

OpenVTC/verifiable-git-infrastructure#33 is the move that ends it — the
VGI workspace onto vta-sdk 0.31 and TDK 0.10, no source change, green on
its own pipeline. Rather than block on the publish, a `[patch.crates-io]`
entry redirects `did-git-sign` (and its path-dep `vgi-core`) to that PR's
head. The requirement in `openvtc/Cargo.toml` still names 0.4.6, which is
the version VGI carries at that rev; the patch decides only where 0.4.6
comes from. Pinned by rev, never by branch, so a further push to that PR
cannot silently change what this builds against — the same discipline VGI
itself applies to `trql-client`. Both git sources are allow-listed in
`deny.toml`, and `publish = false` here, so a git source costs this
workspace nothing on its own release path.

Delete the patch block and raise the floor to 0.4.7 once VGI publishes.
That is the fourth consecutive cycle this obligation has come due, so the
note is written as the rule rather than as this version's incident.

With it, `cargo tree -i vta-sdk` and `cargo tree -i trust-tasks-rs` each
resolve a single node. Remaining duplicates are upstream RustCrypto 0.x /
1.0 splits no line here controls.

## Source changes

- `parse_envelope_reply` in trust-tasks-capability-client 0.17 folded
  the SPEC §4.9 correlation check into the parse and now takes the
  thread id the caller is waiting on. The inbound dispatch is a fan-in
  point that waits on nothing in particular, so it reads the document
  first and classifies against the document's own `threadId`. The
  correlation that matters is unchanged: `apply_capability_replies`
  still matches the reply to the open view's `pending_thid` and drops
  anything else.
- `JoinRequestStatusResponseBody` gained `code`, `reason` and
  `decided_at` (vta-sdk 0.31) — refusal detail carried on a `rejected`
  status. The e2e helper does not exercise a rejection, so it sends none.
- vta-sdk 0.31 stopped accepting `VtaClient::new` + `set_token` for a
  client that dispatches Trust Tasks. A bearer token authenticates the
  *connection*; SPEC §7.2 items 5b and 7a want an in-band `recipient` and
  a document `proof`, which the client can only produce from a
  `ClientIdentity`. The setup wizard's REST arm was hand-rolling exactly
  that shape — it authenticates separately because it needs the token
  itself to cache — so the very next dispatch on that client, the context
  probe, would have failed with "authenticated but carries no
  ClientIdentity". It now builds the client the way `connect_auto`'s REST
  arm does. The two `mockvta_bootstrap_e2e` clients had the same shape
  and are the reason this was caught: they are `#[ignore]`d, so only the
  coverage job (`--include-ignored`) runs them, and they now authenticate
  as a real `did:key` whose token is minted for that same DID — item 6
  rejects a document whose in-band issuer disagrees with the identity the
  transport authenticated as.
- Rust 1.98's clippy flags the nested `if let` in the envelope dispatch
  as `collapsible_if`; it is a let chain now, which edition 2024 has had
  since well before the 1.95 MSRV.

## Testing

cargo fmt / clippy (on 1.98, the toolchain that flagged the lint) / doc
with `-D warnings` / cargo-deny (advisories, licenses, bans, sources) /
`cargo check` on the 1.95 MSRV / `cargo bench --no-run` all clean.
`cargo test --workspace --tests -- --include-ignored` — 921 passing, 0
failed, including the three MockVta bootstrap e2es that the coverage job
runs. `cargo test --workspace --no-default-features` clean.


Claude-Session: https://claude.ai/code/session_016rR4AnzuwoVXX1MU8aaRKB

Signed-off-by: Glenn Gore <glenn.g@affinidi.com>
@affinidi-appsecurity-bot

Copy link
Copy Markdown

🛡️ AI Agentic Security Code Review — all clear. We checked this change and found nothing to report. Keep shipping secure code!

Note: for major, breaking, or feature-introducing changes, you can always request an in-depth review from the security team.

A *follow*, not a choice. `vta-sdk` is 0.x, so `"0.31"` excludes 0.32, and a
consumer that takes 0.32 while this crate asks for 0.31 ends up with two
copies of `vta-sdk` in one graph — which do not unify, so the workspace stops
building. This crate is the edge that decides when OpenVTC may move, and it
has now been the thing in the way five times: 0.23, 0.25, 0.27, 0.31, 0.32.

Nothing here needs anything 0.32 added. `did-git-sign` reaches the VTA
through `connect_auto` and takes display names; `ClientIdentity` grew a
`verification_method` member (VTI #1193) and nothing in this workspace names
that type, so the bump is the manifest and the lockfile.

No other requirement moves with it: vta-sdk 0.32 keeps trust-tasks-rs 0.17,
affinidi-tdk 0.10 and affinidi-messaging-sdk 0.21 — the same line this
workspace already resolves — and `trql-client` does not depend on `vta-sdk`
at all, so the pinned trust-registry rev stays where it is.

`cargo tree -i vta-sdk` reports one row (0.32.0, from did-git-sign and
verify-trust). fmt, `clippy --workspace --all-targets -D warnings` and
`cargo test --workspace` all clean.

Signed-off-by: Glenn Gore <glenn.g@affinidi.com>
@stormer78
stormer78 force-pushed the chore/deps-refresh-2026-08 branch 2 times, most recently from f4604bf to d2c091d Compare August 29, 2026 02:10
@stormer78 stormer78 changed the title chore(deps): take vta-sdk 0.31, TDK 0.10 and the trust-tasks 0.17 trql-client chore(deps): take vta-sdk 0.32, TDK 0.10 and the trust-tasks 0.17 trql-client Aug 29, 2026
@stormer78
stormer78 merged commit 0b7e863 into main Aug 30, 2026
11 checks passed
@stormer78
stormer78 deleted the chore/deps-refresh-2026-08 branch August 30, 2026 09:23
@stormer78 stormer78 mentioned this pull request Aug 30, 2026
stormer78 added a commit that referenced this pull request Aug 30, 2026
Releases the `vta-sdk` 0.32 / TDK 0.10 / trust-tasks 0.17 move from #33.

The reason to cut it now is the one 0.4.5 and 0.4.6 both had. OpenVTC is on
`vta-sdk` 0.32.1 and `trust-tasks-rs` 0.17, while the published
`did-git-sign` 0.4.6 requires `vta-sdk ^0.27` — one edge that pulls a second
`vta-sdk` back into OpenVTC's graph.

OpenVTC has been working around exactly that with a `[patch.crates-io]` block
pinning `did-git-sign` and `vgi-core` to a VGI commit, which until #33 landed
was a commit on an unmerged branch. Publishing 0.4.7 is what lets that block
be deleted rather than re-pointed, which is what its own comment asks for.

Version bump only; `cargo test --workspace` is green (116 tests).

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.

2 participants