Skip to content

refactor: consolidate SPI modules into five layer-oriented modules#5842

Merged
paullatzelsperger merged 2 commits into
mainfrom
refactor/spi-consolidation
Jun 24, 2026
Merged

refactor: consolidate SPI modules into five layer-oriented modules#5842
paullatzelsperger merged 2 commits into
mainfrom
refactor/spi-consolidation

Conversation

@paullatzelsperger

@paullatzelsperger paullatzelsperger commented Jun 24, 2026

Copy link
Copy Markdown
Member

What this PR changes/adds

Implements the decision record
2026-06-18-spi-module-consolidation:
the 45 fine-grained modules under spi/ are merged into five coarse, layer-oriented modules, and the layout is
flattened to spi/<name>-spi:

New module Absorbs
core-spi boot, http, web, json-ld, transform, validator, transaction(+datasource), policy-model, token, jwt, keys, encryption, oauth2, auth, identity-did, verifiable-credentials, connector-participant-context, vault-hashicorp, data-address-*
control-plane-spi asset, catalog, contract, transfer, policy, secrets, policy-engine, participant, request-policy-context, cel, participant-context-single/config, edr-store, task, policy-monitor, data-plane-selector, federated-catalog, crawler
data-plane-spi data-plane-http-spi
dcp-spi renamed from decentralized-claims-spi
dataspace-protocol-spi renamed from protocol-spi

All ~257 consumer build.gradle.kts, the dist/bom/ BOMs and settings.gradle.kts are rewritten to the new paths.

Why it does that

implements the D-R

Further notes

  • Breaking change for downstream adopters: 40 published Maven coordinates (org.eclipse.edc:boot-spi,
    :transfer-spi, :asset-spi, …) disappear; their content now ships in one of the five modules above. The five new
    artifactIds are core-spi, control-plane-spi, data-plane-spi, dcp-spi, dataspace-protocol-spi.
  • Surplus @Spi package-info annotations are reduced to one per merged module (autodoc requires a single SPI
    definition per module); the package javadoc is preserved.
  • Fixes a latent unfinished Mockito verify() in AbstractJsonLdTransformerReturnObjectTest that only surfaced once
    the transform-spi tests joined core-spi's test task.
  • All source moves use git mv to preserve history.
  • The DR's layering diagram is updated to match the final mapping (federated-catalog folded into control-plane-spi;
    dcp-spi → control-plane-spi edge).

Who will sponsor this feature?

TODO: @-mention the sponsoring committer.

Linked Issue(s)

n/a — tracked via the decision record.

@paullatzelsperger paullatzelsperger requested a review from a team as a code owner June 24, 2026 12:49
@paullatzelsperger paullatzelsperger added the refactoring Cleaning up code and dependencies label Jun 24, 2026
Implements the decision record 2026-06-18-spi-module-consolidation: the 45
fine-grained modules under spi/ are merged into five coarse, layer-oriented
modules and the layout is flattened to spi/<name>-spi:

- core-spi              (runtime primitives; absorbs boot/http/web/json-ld/
                         transform/validator/transaction(+datasource)/policy-model/
                         token/jwt/keys/encryption/oauth2/auth/identity-did/
                         verifiable-credentials/connector-participant-context/
                         vault-hashicorp/data-address-* spis)
- control-plane-spi     (connector domain + stores; absorbs asset/catalog/contract/
                         transfer/policy/secrets/policy-engine/participant/
                         request-policy-context/cel/participant-context-*/edr-store/
                         task/policy-monitor/data-plane-selector/federated-catalog/
                         crawler spis)
- data-plane-spi        (absorbs data-plane-http-spi)
- dcp-spi               (renamed from decentralized-claims-spi)
- dataspace-protocol-spi (renamed from protocol-spi)

All ~257 consumer build files, the BOMs and settings.gradle.kts are rewritten to
the new paths. Surplus @SPI package-info annotations are reduced to one per merged
module (autodoc requires a single SPI definition per module). A latent unfinished
Mockito verify() in AbstractJsonLdTransformerReturnObjectTest is fixed; it only
surfaced once the transform-spi tests joined core-spi's test task.

The DR's layering diagram is updated to match the final mapping (federated-catalog
folded into control-plane-spi; dcp-spi -> control-plane-spi edge).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@paullatzelsperger paullatzelsperger force-pushed the refactor/spi-consolidation branch from 5ef8d1d to 42074b4 Compare June 24, 2026 13:04
@paullatzelsperger paullatzelsperger added the breaking-change Will require manual intervention for version update label Jun 24, 2026
@ndr-brt

ndr-brt commented Jun 24, 2026

Copy link
Copy Markdown
Member

@ndr-brt ndr-brt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

on trust

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking-change Will require manual intervention for version update refactoring Cleaning up code and dependencies

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants