Skip to content

chore(core): 0.8.0 — a minor, because a dependency moved the exported API - #168

Merged
stormer78 merged 1 commit into
mainfrom
chore/pnm-core-0.8.0
Sep 7, 2026
Merged

chore(core): 0.8.0 — a minor, because a dependency moved the exported API#168
stormer78 merged 1 commit into
mainfrom
chore/pnm-core-0.8.0

Conversation

@stormer78

Copy link
Copy Markdown
Contributor

Follow-up to #167, which took @openvtc/trust-tasks 0.16.11 -> 0.17.1 and left @openvtc/pnm-core at 0.7.0.

Why this needs a version at all

No source in this package changed. That is exactly why the version has to move.

personaProfileGet returns PersonaProfileGetResponsePayload, imported straight from the binding — the emitted dist/admin/persona.d.ts names @openvtc/trust-tasks/persona/profile/get/1.0/payload, not a local declaration. So taking 0.17.1 retyped this package's public API: resolved entries are ResolvedClaim rather than the pool Attribute, and attributeId, version and updatedAt are optional where they were required.

A consumer reading any of the three as a plain string/number now fails to compile under strictNullChecks. That is the fix arriving rather than a regression — the members are absent on an inline entry, and code that assumed them was assuming a profile cannot hold one — but it is a break, and below 1.0 a break moves the minor.

A green build says nothing about whether the API held when the API belongs to a dependency. This repo builds and tests clean on 0.16.11 and on 0.17.1 alike; nothing here compiles against the members that changed. The check that sees it is reading the emitted .d.ts and asking where each exported type is declared. Same hazard cargo-semver-checks has on the Rust side of the stack, in a language with no such tool at all.

Changes

Verification

npm run build and npm test green across the workspace (788 tests, 0 failures). Verified as it would publish: npm pack --dry-run resolves 0.8.0 over 534 files with dist/admin/persona.* and dist/persona/* present.

… API

No source in this package changed, and that is exactly why the version has to.

`personaProfileGet` returns `PersonaProfileGetResponsePayload`, imported
straight from `@openvtc/trust-tasks` — the emitted `dist/admin/persona.d.ts`
names the binding's module, not a local declaration. Taking 0.17.1 therefore
retyped this package's own public API: `resolved` entries are `ResolvedClaim`
rather than the pool `Attribute`, so `attributeId`, `version` and `updatedAt`
are optional where they were required.

A consumer reading any of the three as a plain `string`/`number` now fails to
compile under `strictNullChecks`. That is the fix arriving rather than a
regression — the members are absent on an `inline` entry, and code that
assumed them was assuming a profile cannot hold one — but it is a break, and
below 1.0 a break moves the minor.

**A green build says nothing about whether the API held when the API belongs
to a dependency.** This repo builds and tests clean on 0.16.11 and on 0.17.1
alike; nothing here compiles against the members that changed. The check that
sees it is reading the emitted `.d.ts` and asking where each exported type is
declared. Same hazard `cargo-semver-checks` has on the Rust side of the stack,
in a language with no such tool at all.

Dependents moved to `^0.8.0` (extension, pwa) and the lockfile with them.

Verified as it would publish: `npm pack --dry-run` resolves 0.8.0 over 534
files with `dist/admin/persona.*` and `dist/persona/*` present.

Signed-off-by: Glenn Gore <glenn.g@affinidi.com>
@stormer78
stormer78 merged commit e0646fd into main Sep 7, 2026
3 checks passed
@stormer78
stormer78 deleted the chore/pnm-core-0.8.0 branch September 7, 2026 09:51
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