Skip to content

feat(coordinator): add extension seam#3532

Merged
fluentcrafter merged 10 commits into
mainfrom
feat/coordinator-extension-seam-2
Jul 13, 2026
Merged

feat(coordinator): add extension seam#3532
fluentcrafter merged 10 commits into
mainfrom
feat/coordinator-extension-seam-2

Conversation

@fluentcrafter

@fluentcrafter fluentcrafter commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Squashes all changes from feat/coordinator-extension-seam into a single commit rebased onto latest main
  • Introduces a CoordinatorExtension seam/API
  • Parameterizes the coordinator image/jar/artifact name across docker-compose and the reusable e2e workflow
  • Derives the e2e monorepo checkout ref from workflow_ref for cross-repo calls

Test plan

  • CI passes (build, lint, e2e workflow)
  • Verify coordinator starts with the new extension seam wired in
  • Verify reusable e2e workflow still resolves coordinator image/jar/artifact names correctly (including the merged Docker image loading step)

Note

Medium Risk
Touches coordinator lifecycle and JSON-RPC routing (startup order and handler merge), plus CI/docker paths that gate e2e; defaults preserve OSS behavior but misconfigured enterprise image/JAR env vars could break local or cross-repo e2e runs.

Overview
Adds a coordinator extension seam so enterprise builds can plug in extra long-running services and JSON-RPC methods on shared Vertx, metrics, and DB. New coordinator:extensions-api defines CoordinatorContext, CoordinatorExtension, and CoordinatorExtensionFactory (default NOOP); CoordinatorApp wires factory-created extensions into startup/shutdown and merges handlers into Api with a clash guard on core method names.

Docker / e2e now parameterize the coordinator via LINEA_COORDINATOR_IMAGE_NAME, LINEA_COORDINATOR_JAR, and configurable artifact name prefix. Reusable e2e logic moves into composite action run-e2e-tests (artifact load, tag env, make retry for stack bring-up); setup-nodejs gains working-directory. Makefile adds a portable retry target (perl alarm) used by CI env startup.

E2e image loading no longer falls back to pulling develop when an artifact is missing—missing artifacts are skipped and tags default to develop only when unset.

Reviewed by Cursor Bugbot for commit 6a428f3. Bugbot is set up for automated code reviews on this repo. Configure here.

Squash all changes from feat/coordinator-extension-seam onto latest main: introduces a CoordinatorExtension seam/API, parameterizes the coordinator image/jar/artifact name in compose and the reusable e2e workflow, and derives the e2e monorepo checkout ref from the workflow_ref for cross-repo calls.

Signed-off-by: Fluent Crafter <205769460+fluentcrafter@users.noreply.github.com>
@codecov

codecov Bot commented Jul 7, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 0% with 24 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
...ain/kotlin/linea/coordinator/app/CoordinatorApp.kt 0.00% 16 Missing ⚠️
...r/app/src/main/kotlin/linea/coordinator/api/Api.kt 0.00% 5 Missing ⚠️
...nea/coordinator/extensions/CoordinatorExtension.kt 0.00% 3 Missing ⚠️

📢 Thoughts on this report? Let us know!

@fluentcrafter fluentcrafter changed the title feat(coordinator): add extension seam for enterprise distribution feat(coordinator): add extension seam Jul 7, 2026
Signed-off-by: Fluent Crafter <205769460+fluentcrafter@users.noreply.github.com>
Signed-off-by: Fluent Crafter <205769460+fluentcrafter@users.noreply.github.com>
Signed-off-by: Fluent Crafter <205769460+fluentcrafter@users.noreply.github.com>
@fluentcrafter
fluentcrafter force-pushed the feat/coordinator-extension-seam-2 branch from e3d4677 to 3ce8baf Compare July 10, 2026 11:50
Signed-off-by: Fluent Crafter <205769460+fluentcrafter@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR adds an extension seam for the Kotlin coordinator so downstream distributions can plug in additional long-running services and JSON-RPC methods, and updates local Docker + CI E2E wiring to parameterize coordinator image/jar/artifact naming and to support cross-repo reusable workflow calls.

Changes:

  • Introduces coordinator:extensions-api with CoordinatorExtensionFactory / CoordinatorExtension / CoordinatorContext, and wires CoordinatorApp + Api to merge extension JSON-RPC handlers (with core-method clash detection).
  • Parameterizes coordinator Docker image name and launched JAR in compose via LINEA_COORDINATOR_IMAGE_NAME and LINEA_COORDINATOR_JAR (mapped to COORDINATOR_JAR).
  • Refactors reusable E2E workflow to use a composite action, derive monorepo checkout ref from workflow_ref for cross-repo calls, and pass through coordinator image/jar/artifact inputs.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
settings.gradle Adds the new coordinator:extensions-api Gradle module to the build.
docker/compose-spec-l2-services.yml Parameterizes coordinator image name and JAR selection via env vars.
coordinator/extensions-api/src/main/kotlin/linea/coordinator/extensions/CoordinatorExtension.kt Defines the extension seam API (context, extension, factory with NOOP default).
coordinator/extensions-api/build.gradle Declares the extension API module and its allowed dependencies.
coordinator/app/src/main/kotlin/linea/coordinator/app/CoordinatorApp.kt Resolves extensions early, starts/stops extension services, and passes extra JSON-RPC handlers to Api.
coordinator/app/src/main/kotlin/linea/coordinator/api/Api.kt Merges extension JSON-RPC handlers into the router and fails fast on core-method clashes.
coordinator/app/build.gradle Adds dependency on :coordinator:extensions-api.
.github/workflows/reusable-run-e2e-tests.yml Moves E2E logic into a composite action; adds inputs for coordinator image/jar/artifact and configurable runner.
.github/actions/setup-nodejs/action.yml Adds working-directory support for node/pnpm setup and caching paths.
.github/actions/run-e2e-tests/action.yml Adds a composite action encapsulating E2E environment setup, artifact image loading, and test execution.

Comment thread .github/actions/run-e2e-tests/action.yml Outdated
Comment thread .github/actions/run-e2e-tests/action.yml
@@ -144,153 +129,23 @@ jobs:
with:
repository: LFDT-Lineth/lineth-monorepo

@Filter94 Filter94 Jul 10, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

If we move it to the inputs, can we delete this file completely and use .github/actions/run-e2e-tests/action.yml instead?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

You mean removing .github/workflows/reusable-run-e2e-tests.yml ?

That would loose the ability of running the e2e manually. Usefull sometimes for debugging ...

Filter94
Filter94 previously approved these changes Jul 10, 2026
Signed-off-by: Fluent Crafter <205769460+fluentcrafter@users.noreply.github.com>
Signed-off-by: Fluent Crafter <205769460+fluentcrafter@users.noreply.github.com>
@fluentcrafter
fluentcrafter merged commit f32a081 into main Jul 13, 2026
54 of 55 checks passed
@fluentcrafter
fluentcrafter deleted the feat/coordinator-extension-seam-2 branch July 13, 2026 09:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants