Skip to content

gdc and nymauth: no offer twins; vc images from c8c5b1ea (SUNET/vc#840) as the standing pin - #87

Merged
leifj merged 4 commits into
mainfrom
feat/no-twins-with-840
Oct 21, 2026
Merged

leifj merged 4 commits into
mainfrom
feat/no-twins-with-840

Conversation

@leifj

@leifj leifj commented Oct 21, 2026

Copy link
Copy Markdown
Contributor

Not deployed yet. Decision (user, 2026-10-22): remove the offer twins and pin vc builds that include SUNET/vc#840 as standard practice until it is merged to vc main.

Why this is one PR

Steps A and B of the twins plan (#83 and #84) were merged into their stacked branches AFTER #81 had merged, so neither reached main. This PR lands both (branch feat/remove-offer-twins merged cleanly) together with the pins that make them work.

What

Verified locally with the new images (not live)

The new apigw starts with gdc's rendered config and the flag on all 12 base scopes (gdc: api_auth.jwks.enable true, admin_ui_enable false). With admin_ui_enable: true it refuses to start with #840's guard message naming the scopes. A pre-authorized offer minted for nym_auth (alice-001) returns 200 with credential_configuration_ids: ["nym_auth"]; nym_auth_offer is gone (400 invalid_scope). The new verifier starts with the gdc config (earlier checks: refusals, presets). Not yet tested: redeeming a base-scope offer in a wallet. The current Pixel APK cannot be used for that once the client-side-encryption engine is deployed (known, accepted); the verification here is mint-level only.

Tests

New test_pins_carry_840 (4); test_nymauth_environment updated (no twins, flag set); test_offer_without_twins/test_verifier_credential_metadata from the merged branches; golden refreshed; make vc-config-parity clean. Full suite: only the 4 unrelated test_chat errors (missing optional dependency).

Deploy

Together with the pending engine redeploy (one make fly-up ENV=gdc): vc images and twin removal first drop the verifier's and issuer's sessions once. The engine pin (and its provenance) follows in its own commit when the build is handed over.

🤖 Generated with Claude Code

leifj and others added 4 commits October 21, 2026 20:41
…(per environment) and datastore-offer follows the rendered config

SUNET/vc#840. issuer.allowPreauthOffer (default off; on for gdc) renders allow_preauth_offer on every login-gated datastore
scope. scripts/datastore.py mints against the base scope when the rendered config flags it, else the <type>_offer twin; a named
twin is never rewritten. The twins stay; step B removes them after an offer for the base scope has been redeemed.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…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>
… as the standing pin

Lands twins steps A and B (the stranded #83/#84) and pins vc images built from a SHA that contains #840 until it is merged to vc main:
tests/test_pins_carry_840.py, a PIN PROVENANCE block naming #840 and the SHA, nymauth.yaml sets issuer.allowPreauthOffer like gdc.
Offers now name the base scope (make datastore-offer SCOPE=nym_auth DOCUMENT_ID=document_id_nym_auth_alice-001).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@leifj
leifj merged commit e42524c into main Oct 21, 2026
@leifj
leifj deleted the feat/no-twins-with-840 branch October 21, 2026 23:28
leifj added a commit that referenced this pull request Oct 21, 2026
docs: no datastore-sync step in environments with #840 (follow-up to #87)
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