You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Registry Stack issue #562 defines digitally authenticated representative OID4VCI issuance for credentials whose subject and wallet holder are different people.
Solmara already demonstrates a delegated two-hop child-benefit evaluation: a guardian relationship is checked before the child's civil facts are consulted. That is a useful starting point, but it does not yet demonstrate issuance. The current journey does not prove that an authenticated representative can receive a wallet-bound credential whose sub identifies the child while cnf identifies the representative's wallet key.
This repository should own the runnable adopter demo and evidence. The Registry Stack capability, schema, product tests, and public product documentation remain in registrystack/registry-stack.
Outcome
A complete Solmara journey demonstrates an authenticated parent obtaining and storing a child birth credential after:
one governed source proves the exact parent-child relationship;
a distinct Civil Registration source supplies the configured child facts;
Notary creates an OID4VCI offer only after both authorization and evaluation succeed; and
the wallet proves a key that is bound as cnf, while the child's pseudonymous target reference is issued as sub.
The demo must make the separation of representative, credential subject, relationship source, civil-fact source, and holder key visible without exposing protected values.
Demo contract
Use the digitally authenticated representative ceremony defined by Registry Stack #562.
Authenticate the representative through the configured Solmara eSignet/OIDC path before creating a usable offer.
Commit the selected child and credential configuration in short-lived server-side state before authentication begins.
Prove the relationship through the configured compiler-pinned Relay claim. Request metadata, consent UI, on_behalf_of, and wallet possession are not substitutes for relationship evidence.
Use a distinct governed Civil Registration source for the birth facts included in the issuance evaluation.
Use only the explicitly allow-listed representative relationship, purpose, child claim, credential profile, and OID4VCI credential configuration.
Preserve the standard short-lived, single-use pre-authorized-code wallet flow and the interoperability constraints established by Solmara #12.
Use synthetic Solmara identities and identifiers only.
Scope
Pin Solmara atomically to the exact published Registry Stack candidate that implements #562.
Extend the existing child/guardian personas and fixtures with:
one permitted parent-child pair;
one authenticated adult with no permitted relationship;
one alternative child for target-substitution checks; and
deterministic unavailable or ambiguous relationship-source controls.
Configure a relationship proof claim against a governed relationship source and a separate registry-backed child birth credential claim against Civil Registration.
Configure the relationship-to-credential-profile allow-list and the representative-enabled OID4VCI credential configuration.
Add the representative initiation, OIDC return, authorization/evaluation, offer presentation, wallet redemption, and credential verification journey.
Update the portal and walkthrough so they distinguish:
authenticated representative;
selected dependent subject;
relationship proof source;
child-fact source;
offer/issuance transaction;
wallet holder key; and
the meanings of sub and cnf.
Add focused configuration, scenario, portal, live smoke, browser, replay, and redaction coverage.
Capture reproducible candidate evidence with exact Registry Stack image digests, Solmara commit, wallet version, commands or user steps, result, and first blocker.
Acceptance criteria
A seeded Solmara parent authenticates through eSignet for one previously selected child and credential configuration.
The configured relationship authority proves the exact requester-target pair before Civil Registration is consulted.
Civil Registration supplies the exact registry-backed child facts through the configured Relay dependency closure.
No offer is created when relationship proof is false, missing, ambiguous, unavailable, stale, or for a different requester-target pair.
The live wallet imports and redeems the resulting pre-authorized offer, proves possession of its key, and stores the issued SD-JWT VC.
Verification shows sub is the child's issuer-scoped pseudonymous target reference and cnf is the representative wallet proof key.
The representative cannot select a credential configuration or profile not explicitly enabled for the proven relationship.
Changing the child after authorization fails without consulting or issuing for the substituted child.
Changing the holder key, nonce, credential request, relationship, evaluation, or configuration fails without minting a credential.
Reusing or concurrently redeeming the offer, code, token transaction, or nonce cannot mint a second credential.
The credential endpoint uses the stored, committed evaluation and makes zero new Relay calls.
The UI never presents consent, wallet possession, or on_behalf_of metadata as proof of parenthood, guardianship, custody, or identity.
Logs, screenshots, retained evidence, and audit views contain no raw civil identifiers, relationship records, credential values, wallet proofs, offer secrets, access tokens, or tx_code.
just lint, just test, just smoke, just review, the focused browser journey, and the release-candidate wallet journey pass.
Reuse and extend the wallet lifecycle established by registrystack/solmara-lab#12. This issue owns the representative-specific ceremony and evidence, not the generic wallet restoration work.
Non-goals
Implementing Registry Stack product behavior in Solmara.
An assisted registrar or OpenCRVS ceremony that does not digitally authenticate the representative in Notary.
Treating wallet possession as relationship, custody, guardianship, or civil-status evidence.
Accepting relationship facts, child facts, raw sub, or subject-holder mappings from the portal or another caller.
Inline proof through a separate sovereign Registry Stack federation domain.
Context
Registry Stack issue #562 defines digitally authenticated representative OID4VCI issuance for credentials whose subject and wallet holder are different people.
Solmara already demonstrates a delegated two-hop child-benefit evaluation: a guardian relationship is checked before the child's civil facts are consulted. That is a useful starting point, but it does not yet demonstrate issuance. The current journey does not prove that an authenticated representative can receive a wallet-bound credential whose
subidentifies the child whilecnfidentifies the representative's wallet key.This repository should own the runnable adopter demo and evidence. The Registry Stack capability, schema, product tests, and public product documentation remain in
registrystack/registry-stack.Outcome
A complete Solmara journey demonstrates an authenticated parent obtaining and storing a child birth credential after:
cnf, while the child's pseudonymous target reference is issued assub.The demo must make the separation of representative, credential subject, relationship source, civil-fact source, and holder key visible without exposing protected values.
Demo contract
on_behalf_of, and wallet possession are not substitutes for relationship evidence.Scope
subandcnf.Acceptance criteria
subis the child's issuer-scoped pseudonymous target reference andcnfis the representative wallet proof key.on_behalf_ofmetadata as proof of parenthood, guardianship, custody, or identity.tx_code.just lint,just test,just smoke,just review, the focused browser journey, and the release-candidate wallet journey pass.Dependencies
Non-goals
sub, or subject-holder mappings from the portal or another caller.