Skip to content

DRAFT offers without twins, step B: drop the twins where offers are allowed (after step A is verified live) - #84

Merged
leifj merged 1 commit into
feat/offer-without-twinsfrom
feat/remove-offer-twins
Oct 21, 2026
Merged

leifj merged 1 commit into
feat/offer-without-twinsfrom
feat/remove-offer-twins

Conversation

@leifj

@leifj leifj commented Oct 21, 2026

Copy link
Copy Markdown
Contributor

DRAFT, not deployed. Step B: remove the twins where offers are allowed. Stacked on #83 (step A); do not deploy before an offer minted for the base scope has been redeemed: an offer that names a configuration id the issuer no longer publishes is unredeemable (the wallet resolves it against credential_configurations_supported).

An environment that sets issuer.allowPreauthOffer (gdc) now drops the <type>_offer twins: vc_render.drop_offer_twins (called from sirosid_core/render.py on the base values) removes the credential types whose issuance.authProvider is preauth and their datastoreImport documents. On gdc that gives one entry per type: the issuer's credential_configurations_supported source (common.credential_metadata) 26 -> 14, the datastore scopes 24 -> 12, the verifier's lists 14 (#82), no twin documents imported. Every other environment keeps its twins (its images cannot offer a login-gated scope), so nothing is deleted from the repo; fixtures/vc-bootstrapping/*_offer.json stay for them. Twin documents already in gdc's live datastore stay until removed.

Tests: tests/test_verifier_credential_metadata.py now covers both worlds (default: twins on the issuer, hidden from the verifier; flag on: no twin anywhere, 14 entries, nym_auth flagged, no twin document imported); with the render change reverted the new class fails. Parity clean; CLAUDE.md documents the migration order.

🤖 Generated with Claude Code

…Offer drops the <type>_offer twins

vc_render.drop_offer_twins removes the preauth credential types and their bootstrapping documents from the base values for such an
environment (gdc), so the issuer, the datastore scopes and the verifier carry one entry per type. Other environments keep their twins.
DO NOT DEPLOY before an offer minted for the base scope has been redeemed (step A): offers that name a configuration id the issuer no
longer publishes are unredeemable.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.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