Skip to content

feat(decision): publish decision-engine as a reusable library artifact - #186

Merged
tiana-code merged 1 commit into
mainfrom
feat/E-05-decision-library-mode
Jun 17, 2026
Merged

feat(decision): publish decision-engine as a reusable library artifact#186
tiana-code merged 1 commit into
mainfrom
feat/E-05-decision-library-mode

Conversation

@tiana-code

Copy link
Copy Markdown
Owner

What

Make libs/decision-engine a publishable, embeddable library artifact com.fincore:decision-engine, usable without services/decision. Applies maven-publish and declares one publication from(components["java"]) (main + sources + javadoc jars) with a credible POM: name, description, url, BSL 1.1 license, developers, scm.

This is the packaging precursor to the standalone-repo extraction (#178).

No remote publish (CLAUDE.md §0)

No publishing { repositories {} } remote target and no signing are declared, so the build is structurally incapable of pushing the artifact: only generatePomFileForMavenPublication / publishToMavenLocal exist, never a publish...ToRepository task. No CI workflow runs a gradle publish. The real release (registry, signing, Maven Central metadata) stays an owner action.

Embeddable

LibraryEmbeddingTest proves the public API is self-sufficient: from a JSON rule string + an attribute map, a caller reaches a DecisionResult using only com.fincore.decision.* types (no Spring, no service).

Verified (no remote publish involved)

  • POM: com.fincore:decision-engine:0.1.0-SNAPSHOT, full metadata, <dependencies> = kotlin-stdlib + jackson-databind only (runtime scope), zero Spring/:services: leak.
  • Three jars built: main, -sources, -javadoc.
  • Module test/detekt/spotlessCheck/assemble green.

Gates

critic GO-WITH-CHANGES (AC-4 runtime-scope wording + spotlessApply, folded) -> code-reviewer Needs-Fix resolved (explicit publication version added; 3 LOW Maven-Central items deferred to the owner release slice) -> security-auditor PASS (no secrets, no remote publish, no POM leak, boundary clean) -> evaluator 0.91 PASS.

Closes #175

Apply maven-publish to libs/decision-engine and declare the
com.fincore:decision-engine publication from the java component, so the
main, sources and javadoc jars ship together with a credible POM
(name, description, url, BSL 1.1 license, developers, scm).

No remote repository is declared, so the artifact can be consumed locally
or in the upcoming standalone repo but nothing can push it remotely; the
real release stays an owner action. A library embedding test proves the
parser and evaluator are usable through the public api alone, without the
decision service.

Closes #175
@tiana-code tiana-code added this to the v0.2.0 milestone Jun 17, 2026
@tiana-code
tiana-code merged commit cf34481 into main Jun 17, 2026
8 checks passed
@tiana-code
tiana-code deleted the feat/E-05-decision-library-mode branch June 17, 2026 23:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

F-05.8 Library mode artifact

1 participant