feat(demo): add optional OpenCRVS v2 interoperability proof - #22
Conversation
Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 84942c09ea
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 776bff7f6b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ba9db373e5
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cf78b64993
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d8c766f7b7
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| write_runtime_env(runtime) | ||
| ensure_postgres_tls() | ||
| environment = compose_environment(external, runtime) | ||
| run(compose_command("up", "-d", "--build"), env=environment) |
There was a problem hiding this comment.
Recreate services after replacing the runtime project
When up is rerun without a preceding down—for example after changing the OpenCRVS host or authored project—prepare_runtime_project deletes and recreates the bind-mounted project, but this command can leave Relay and Notary running because their Compose configuration and images are unchanged. Those containers retain the old bind mounts while proof() reads hashes from the newly generated project, so the evidence can attribute requests to artifacts that were not exercised. Add --force-recreate or explicitly tear down the existing topology; the Compose up reference documents that --force-recreate recreates containers even when their configuration and image have not changed.
Useful? React with 👍 / 👎.
| header.get("alg") != "EdDSA" | ||
| or header.get("kid") != ISSUER_KID | ||
| or issuer_jwk.get("kid") != ISSUER_KID | ||
| or header.get("kid") != issuer_jwk.get("kid") | ||
| or payload.get("_sd_alg") != "sha-256" |
There was a problem hiding this comment.
Require the dc+sd-jwt protected type
When Notary signs an otherwise valid token whose protected header omits typ or sets it to another JWT type, this check still accepts it and records the format as application/dc+sd-jwt. Require header["typ"] == "dc+sd-jwt" alongside alg and kid; otherwise the proof does not actually verify the credential format it claims to have exercised.
Useful? React with 👍 / 👎.
Signed-off-by: Jeremi Joslin <jeremi@joslin.fr>
Summary
POST /events/events/searchthrough Registry Relaydc+sd-jwt, and verify its signature, canonical credential identity, validity, exact predicate disclosures, and holder binding in memoryRelease boundary
Released Registry Stack v0.15.2 cannot complete this live path. It lacks project authoring for the explicit no-expiry response profile, durable no-cache completion handling, and active worker-time accounting for bounded Relay-owned backend waits. The final paired pre-release proof used exact Registry Stack candidate
d840f2b70b74a83c76c947f997b62d5a70fc7237from registrystack/registry-stack#569.This demo remains deployment-gated until those changes ship in a coordinated Registry Stack release and
versions.envis updated through the normal release-adoption process. It is safe to release the current Solmara version first. The candidate image is local development evidence only and must not be deployed or substituted for release pins.Security and privacy invariants
access_tokenplus case-correcttoken_type: Bearer; no expiry is inferred from unsigned JWT claims and no token is cached across consultationsauth.missing_credential, wrong purpose 403/purpose.not_allowed, and invalid selector 409/evidence.not_availablenull; the no-match control requiresbirth-record-exists: falseand every dependent predicatenullvalueandsatisfiedmembers are bothtrueVerification
just lintjust test(6 generator, 40 scenario, 175 portal, 78 home, 138 script tests with 1 skip, 33 demo unit tests)just reviewjust opencrvs-demo-testwith the exact development compiler (33 unit tests and 73 fixture cases)just opencrvs-demo-composeshellcheck demos/opencrvs-v2/build-candidate.sh demos/opencrvs-v2/postgres-init.shruff checkandruff format --checkfor the runner and testsd840f2b70b74a83c76c947f997b62d5a70fc7237: running Relay and Notary provenance, strict OAuth, native flattened OpenCRVS search, six minimized outputs, five true typed predicates, direct holder-bound credential issuance, current exact-lifetime and canonical issuer/KID/VCT verification, exact disclosures, exact no-match and pre-dispatch negative contracts, exact dispatch counts, sanitized evidence scan, and successful cleanupExplicit non-goals
This is not OpenCRVS certification, OID4VCI wallet delivery, OpenCRVS-triggered issuance, public DID-resolution proof, production CRA key proof, or proof that the credential holder is the child's parent or informant.