Home / Input Output / atala-prism-building-blocks
Feb 27, 6-7 PM (0)
Feb 27, 7-8 PM (0)
Feb 27, 8-9 PM (0)
Feb 27, 9-10 PM (0)
Feb 27, 10-11 PM (0)
Feb 27, 11-12 AM (0)
Feb 28, 12-1 AM (0)
Feb 28, 1-2 AM (0)
Feb 28, 2-3 AM (0)
Feb 28, 3-4 AM (0)
Feb 28, 4-5 AM (1)
Feb 28, 5-6 AM (3)
Feb 28, 6-7 AM (4)
Feb 28, 7-8 AM (4)
Feb 28, 8-9 AM (0)
Feb 28, 9-10 AM (0)
Feb 28, 10-11 AM (0)
Feb 28, 11-12 PM (2)
Feb 28, 12-1 PM (1)
Feb 28, 1-2 PM (0)
Feb 28, 2-3 PM (1)
Feb 28, 3-4 PM (0)
Feb 28, 4-5 PM (0)
Feb 28, 5-6 PM (0)
Feb 28, 6-7 PM (0)
Feb 28, 7-8 PM (0)
Feb 28, 8-9 PM (0)
Feb 28, 9-10 PM (0)
Feb 28, 10-11 PM (0)
Feb 28, 11-12 AM (6)
Mar 01, 12-1 AM (0)
Mar 01, 1-2 AM (0)
Mar 01, 2-3 AM (0)
Mar 01, 3-4 AM (0)
Mar 01, 4-5 AM (0)
Mar 01, 5-6 AM (0)
Mar 01, 6-7 AM (0)
Mar 01, 7-8 AM (0)
Mar 01, 8-9 AM (0)
Mar 01, 9-10 AM (0)
Mar 01, 10-11 AM (0)
Mar 01, 11-12 PM (0)
Mar 01, 12-1 PM (2)
Mar 01, 1-2 PM (0)
Mar 01, 2-3 PM (0)
Mar 01, 3-4 PM (0)
Mar 01, 4-5 PM (0)
Mar 01, 5-6 PM (0)
Mar 01, 6-7 PM (0)
Mar 01, 7-8 PM (0)
Mar 01, 8-9 PM (0)
Mar 01, 9-10 PM (0)
Mar 01, 10-11 PM (0)
Mar 01, 11-12 AM (0)
Mar 02, 12-1 AM (0)
Mar 02, 1-2 AM (0)
Mar 02, 2-3 AM (0)
Mar 02, 3-4 AM (0)
Mar 02, 4-5 AM (0)
Mar 02, 5-6 AM (0)
Mar 02, 6-7 AM (0)
Mar 02, 7-8 AM (0)
Mar 02, 8-9 AM (1)
Mar 02, 9-10 AM (0)
Mar 02, 10-11 AM (0)
Mar 02, 11-12 PM (1)
Mar 02, 12-1 PM (0)
Mar 02, 1-2 PM (1)
Mar 02, 2-3 PM (3)
Mar 02, 3-4 PM (0)
Mar 02, 4-5 PM (0)
Mar 02, 5-6 PM (0)
Mar 02, 6-7 PM (0)
Mar 02, 7-8 PM (0)
Mar 02, 8-9 PM (0)
Mar 02, 9-10 PM (0)
Mar 02, 10-11 PM (0)
Mar 02, 11-12 AM (0)
Mar 03, 12-1 AM (0)
Mar 03, 1-2 AM (0)
Mar 03, 2-3 AM (0)
Mar 03, 3-4 AM (0)
Mar 03, 4-5 AM (0)
Mar 03, 5-6 AM (1)
Mar 03, 6-7 AM (0)
Mar 03, 7-8 AM (0)
Mar 03, 8-9 AM (1)
Mar 03, 9-10 AM (2)
Mar 03, 10-11 AM (4)
Mar 03, 11-12 PM (1)
Mar 03, 12-1 PM (0)
Mar 03, 1-2 PM (2)
Mar 03, 2-3 PM (0)
Mar 03, 3-4 PM (1)
Mar 03, 4-5 PM (1)
Mar 03, 5-6 PM (1)
Mar 03, 6-7 PM (0)
Mar 03, 7-8 PM (0)
Mar 03, 8-9 PM (0)
Mar 03, 9-10 PM (0)
Mar 03, 10-11 PM (0)
Mar 03, 11-12 AM (0)
Mar 04, 12-1 AM (0)
Mar 04, 1-2 AM (0)
Mar 04, 2-3 AM (0)
Mar 04, 3-4 AM (1)
Mar 04, 4-5 AM (0)
Mar 04, 5-6 AM (1)
Mar 04, 6-7 AM (0)
Mar 04, 7-8 AM (0)
Mar 04, 8-9 AM (0)
Mar 04, 9-10 AM (0)
Mar 04, 10-11 AM (1)
Mar 04, 11-12 PM (3)
Mar 04, 12-1 PM (1)
Mar 04, 1-2 PM (2)
Mar 04, 2-3 PM (4)
Mar 04, 3-4 PM (1)
Mar 04, 4-5 PM (0)
Mar 04, 5-6 PM (5)
Mar 04, 6-7 PM (0)
Mar 04, 7-8 PM (0)
Mar 04, 8-9 PM (0)
Mar 04, 9-10 PM (0)
Mar 04, 10-11 PM (0)
Mar 04, 11-12 AM (0)
Mar 05, 12-1 AM (0)
Mar 05, 1-2 AM (0)
Mar 05, 2-3 AM (0)
Mar 05, 3-4 AM (0)
Mar 05, 4-5 AM (0)
Mar 05, 5-6 AM (0)
Mar 05, 6-7 AM (0)
Mar 05, 7-8 AM (0)
Mar 05, 8-9 AM (0)
Mar 05, 9-10 AM (2)
Mar 05, 10-11 AM (0)
Mar 05, 11-12 PM (2)
Mar 05, 12-1 PM (0)
Mar 05, 1-2 PM (0)
Mar 05, 2-3 PM (0)
Mar 05, 3-4 PM (0)
Mar 05, 4-5 PM (0)
Mar 05, 5-6 PM (0)
Mar 05, 6-7 PM (0)
Mar 05, 7-8 PM (0)
Mar 05, 8-9 PM (0)
Mar 05, 9-10 PM (0)
Mar 05, 10-11 PM (0)
Mar 05, 11-12 AM (0)
Mar 06, 12-1 AM (0)
Mar 06, 1-2 AM (0)
Mar 06, 2-3 AM (0)
Mar 06, 3-4 AM (0)
Mar 06, 4-5 AM (0)
Mar 06, 5-6 AM (0)
Mar 06, 6-7 AM (0)
Mar 06, 7-8 AM (0)
Mar 06, 8-9 AM (0)
Mar 06, 9-10 AM (0)
Mar 06, 10-11 AM (0)
Mar 06, 11-12 PM (0)
Mar 06, 12-1 PM (2)
Mar 06, 1-2 PM (0)
Mar 06, 2-3 PM (0)
Mar 06, 3-4 PM (0)
Mar 06, 4-5 PM (0)
Mar 06, 5-6 PM (0)
Mar 06, 6-7 PM (0)
69 commits this week Feb 27, 2026 - Mar 06, 2026
feat!: decouple job modules from format-specific credential dependencies
Move JWT and SD-JWT verification logic behind PresentationService,
SDJwtService, and VcJwtService abstractions so that apiServerJobsIssue
and apiServerJobsPresent no longer depend on credentialsVcJWT,
credentialsSDJWT, or credentialsAnoncreds modules directly.

BREAKING CHANGE: PresentationService, VcJwtService, and SDJwtService
traits have new methods that implementations must provide.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
refactor: deduplicate submitSignedOperation and add isLedgerBacked to VdrDriver
- Simplify submitSignedOperation to delegate to submitVdrOperation,
  eliminating ~30 lines of duplicated HTTP call logic.
- Add isLedgerBacked property to VdrDriver enum, replacing repeated
  `driver == PRISM_NODE || driver == NEOPRISM` checks across test steps.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Signed-off-by: Yurii Shynbuiev <[email protected]>
fix: resolve neoPrismConfigLayer forward reference and add webhooks to vdr_neoprism config
- Change neoPrismConfigLayer from val to lazy val in Modules.scala to fix
  NullPointerException caused by forward reference in object initialization
- Add webhook URLs for Issuer/Holder/Verifier roles in vdr_neoprism.conf
  to support ListenToEvents ability required by DID publishing tests
- Fix duplicate version line in agents config

Signed-off-by: Yurii Shynbuiev <[email protected]>
Co-Authored-By: Claude Opus 4.6 <[email protected]>
Signed-off-by: Yurii Shynbuiev <[email protected]>
feat: wire ModuleRegistry with startup validation (Phase 6)
- ModuleRegistry.fromAll with disable filtering and report generation
- AllModules registry collecting all extracted modules
- CloudAgentApp validates module dependency graph at startup
- Integration tests expanded to 10 (covering all modules + filtering)
- ModuleRegistry unit tests expanded to 8

Co-Authored-By: Claude Opus 4.6 <[email protected]>
feat: add persistence provider contract and SQLite implementation (Phase 5)
- PersistenceProvider trait and PersistenceType enum in shared
- SqlitePersistenceProvider with Flyway migration support
- PostgresPersistenceModule and SqlitePersistenceModule declarations
- New persistence-sqlite sbt project with sqlite-jdbc dependency
- 9 tests: contract (2), SQLite provider (3), module registry (4)

Co-Authored-By: Claude Opus 4.6 <[email protected]>
feat: add DIDComm issuance protocol module and strangler adapter (Phase 3)
Add DIDCommIssuanceModule declaring IssuanceProtocol("didcomm-v3")
capability. Add DIDCommIssuanceAdapter that bridges the IssuanceProtocol
contract to the existing CredentialService — dispatches createRequest
and issueCredential to format-specific methods based on record's
credential format. Enables incremental migration via strangler fig
pattern.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
feat: add plugin architecture foundation — contracts, modules, registry
Phase 0 of plugin architecture migration:
- Capability, Contract, Cardinality types for module dependency system
- Module trait with lifecycle, capabilities, per-module config
- ModuleRegistry with dependency validation and capability resolution
- Credential contracts: CredentialSigner, DataModelCodec, CredentialBuilder,
  VerificationCheck, RevocationCheck, CredentialVerifier combinator
- Protocol contracts: ProtocolTransport, IssuanceProtocol,
  PresentationProtocol, PresentationExchange
- 13 tests passing

Co-Authored-By: Claude Opus 4.6 <[email protected]>
docs: add persistence axis (SQLite), protocol versioning, and updated module graph
- Add PersistenceProvider contract with PostgreSQL and SQLite modules
- Add SQLite considerations (no advisory locks, migration variants)
- Add DIDComm protocol versioning (v2/v3 as separate modules)
- Add Phase 5 (SQLite) to implementation plan, renumber Phase 6

Co-Authored-By: Claude Opus 4.6 <[email protected]>
refactor: decouple notificationsWebhook from connectionsCore and credentialsCore
Type-erase at the consumer boundary by introducing JsonEventConsumer
in notificationsApi. WebhookPublisher now works with Seq[JsonEventConsumer]
instead of typed consumers. JsonEventEncoders moved to apiServer where
WebhookPublisherFactory wires typed consumers with domain-specific encoders.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
refactor: invert credentialsCore dependency on credentialsVcJWT
Move pure data types (JWT, Signer, Issuer, DidResolver, credential/presentation
payloads, proofs) from credentialsVcJWT to credentialsCore while keeping the same
package namespace to avoid import changes across the codebase. Introduce VcJwtService
trait in core with VcJwtServiceLive implementation in vc-jwt, abstracting all crypto
operations (signing, verification, status list creation) behind a service boundary.

credentialsVcJWT now depends on credentialsCore instead of the reverse, completing
the inversion of all format module dependencies.

Co-Authored-By: Claude Opus 4.6 <[email protected]>