AI Fabric Framework 0.3.0
AI Fabric 0.3.0 Release Notes
- Released: 2026-06-27
- Version:
0.3.0 - Current branch reviewed:
Spirng-AI-Integration - Compared against:
origin/mainat1122bc6 - Maven version:
0.3.0 - Release scope: open-source Java framework only. Hosted Platform/Product control-plane workflows are not part of this framework release.
This release is a large framework hardening and enablement release. It moves commodity LLM and
embedding execution to Spring AI, keeps AI Fabric-owned orchestration, action safety, RAG policy,
provider fallback, transient input safety, and vector lifecycle/admin contracts, and adds much
stronger release verification around real apps, vector providers, and RealAPI provider lanes.
The branch diff is intentionally broad. The main external migration cost is provider dependency
replacement and runtime baseline alignment.
Highlights
- Spring AI-backed cloud LLM and embedding execution.
ai-fabric-provider-spring-ainow provides
OpenAI, Azure OpenAI, Anthropic, and Gemini chat providers through Spring AI, plus OpenAI, Azure
OpenAI, Gemini, and optional Spring AI ONNX embeddings. - Native cloud provider modules removed. The previous native OpenAI, Azure OpenAI, Anthropic,
Gemini, and Cohere provider modules are removed from the reactor. Use the Spring AI provider for
commodity model execution. - Native ONNX remains.
ai-fabric-onnx-starterremains the local/offline embedding path and is
separate from the optionalspring-ai-onnxembedding provider. - Java and Spring baseline raised. The framework now targets Java 21, Spring Boot 4.1.x, and
Spring AI 2.0.x. - Vector lifecycle/admin contract hardened. Vector providers now expose typed capabilities,
readiness evidence, diagnostics, exact lifecycle methods, metadata-filter mode evidence, and
shared contract tests across Docker-backed providers. - RAG and indexing now use selected Spring AI pieces. The framework adds Spring AI document
ingestion helpers and opt-in Spring AI RAG evaluation helpers while keeping AI Fabric RAG policy
and vector providers. - Actions are safer and more connected. Connector-backed actions, DB-backed action registry,
Customer Connector API relay, retrieval connector, Spring AI tool callbacks, and MCP action bridge
paths are hardened and tested. - Real app release proof expanded. The examples now prove product-shaped workflows for chat,
action confirmation/interceptors, data sync, privacy deletion, RAG quality, behavior signals,
relationship query, and migration/backfill. - CI is now release-oriented. New guard scripts reject skipped-test release examples, obvious
production placeholder markers, vector documentation overclaims, and missing provider/vector
readiness proof.
Breaking Changes And Compatibility Notes
1. Runtime Baseline
External applications should run on:
- Java 21
- Maven 3.9+
- Spring Boot 4.1.x
- Spring AI 2.0.x
If your application is still on an older Spring Boot line, plan the Spring/Spring Security/Jakarta
dependency upgrade before adopting this release.
2. Provider Module Replacement
Removed native provider modules:
ai-fabric-provider-openaiai-fabric-provider-azureai-fabric-provider-anthropicai-fabric-provider-geminiai-fabric-provider-cohere
Use:
ai-fabric-provider-spring-aifor cloud LLMs and cloud embeddingsai-fabric-onnx-starterfor native local ONNX embeddings
Provider support in this release:
| Provider id | Chat | Embeddings | Implementation path | Notes |
|---|---|---|---|---|
openai |
Yes | Yes | Spring AI | Default cloud LLM path when enabled and credentials are present. |
azure |
Yes | Yes | Spring AI Azure OpenAI | Requires endpoint and deployment names. |
anthropic |
Yes | No | Spring AI | Select another embedding provider. |
gemini |
Yes | Yes | Spring AI Google GenAI | Uses Gemini chat and text embedding models. |
onnx |
No | Yes | AI Fabric native ONNX starter | Local/offline embedding path. |
spring-ai-onnx |
No | Yes | Spring AI Transformers | Optional Spring AI ONNX embedding path. |
cohere |
No | No | Not active | Configuration shape remains modeled, but execution is not wired in this provider path. |
Cohere configuration objects still exist in core provider configuration for compatibility of modeled
settings, but Cohere is not active in the Spring AI execution path in this release.
3. Spring AI Provider Behavior
AI Fabric now uses Spring AI for commodity provider calls, but AI Fabric still owns:
- provider selection and fallback
- orchestration and intent extraction
- action authorization and confirmation
- transient file input policy
- RAG retrieval policy
- response normalization
- usage and safety metadata
- vector lifecycle/admin behavior
SpringAiModelResolver caches Spring AI chat and embedding model clients by connection identity. It
also supports request-scoped endpoint/model overrides for trusted server-side callers.
4. Embedding Provider Defaults
The default embedding provider remains native onnx when no embedding provider is configured.
Supported embedding choices in this branch:
onnx: native AI Fabric ONNX provider fromai-fabric-onnx-starteropenai: Spring AI OpenAI embeddingsazure: Spring AI Azure OpenAI embeddingsgemini: Spring AI Gemini embeddingsspring-ai-onnx: optional Spring AI Transformers ONNX embeddings
Anthropic and Cohere embeddings are not available through this Spring AI provider path.
5. Cache Names Are Namespaced
Framework-owned Spring cache regions now use explicit AI Fabric names:
ai-fabric-embeddingsai-fabric-vector-searchai-fabric-text-searchai-fabric-generationai-fabric-validationai-fabric-retention-statusai-fabric-behavior-retentionai-fabric-access-decisions
If an external application, metrics dashboard, cache manager, or Redis/Ehcache integration refers to
old generic names such as embeddings, vectorSearch, textSearch, aiGeneration,
aiValidation, retentionStatus, behaviorRetention, or accessDecisions, update those names.
The previous helper native cache beans named embeddingCache, searchCache, and generationCache
are no longer exposed as separate Spring beans by the default cache auto-configuration.
6. Vector Provider Semantics Are Stricter
Vector providers now advertise separate search/admin capabilities:
- similarity-search metadata filtering
- scan/admin metadata filtering
- exact fetch by id
- clear by entity type
- efficient entity-type counts
- hybrid/keyword support
- durability and production-profile posture
Portable metadata filters are exact scalar filters over strings, booleans, and integer/long values.
Unsupported filter shapes fail closed instead of broadening results.
If you switch embedding dimensions, for example from OpenAI default dimensions to ONNX 384, rebuild
or clear existing Lucene indexes before running mixed provider tests or production traffic.
The in-memory vector provider is for demos/tests unless an operator explicitly acknowledges its use
under production profiles with ai.vector-db.memory.allow-in-production=true.
7. Data Sync And Runtime Auth Are More Explicit
ai-fabric-data-sync now has stricter request normalization and verified-auth handling. The new
property:
ai:
data-sync:
allow-trusted-platform-internal-sync-bypass: falsedefaults to false. Enable it only behind a trusted backend/runtime boundary that injects verified
system auth context with the expected data-sync scope.
8. Confirmation Routing Is LLM-Structured, Not Backend Text Matching
Pending action confirmation now relies on LLM-produced structured intent or a dedicated
confirmation-resolution LLM prompt. The backend accepts only canonical confirmation decisions:
POSITIVENEGATIVEUNKNOWN
Natural-language decision labels or synonyms in model output fail closed as UNKNOWN. If you
customized confirmation prompts, update them to output those exact enum values.
9. Relationship Query Is More Tolerant Of Real Model Output
Relationship query planning now tolerates null optional fields and unknown JSON properties from
provider output. Blank queries and execution failures return structured unsuccessful RAGResponse
results with error metadata instead of ambiguous failures.
10. Relay Packaging Is Now Runtime-Proved
ai-fabric-relay now builds as an executable Spring Boot jar, ships Docker improvements, and adds a
Helm chart under:
ai-infrastructure-module/ai-fabric-relay/deploy/helm/ai-fabric-relay
The packaged relay local smoke proves API-key rejection, action forwarding, idempotent replay,
idempotency conflict handling, retrieval forwarding, and documents-only retrieval enforcement.
New And Improved Areas
Spring AI Provider
- New Spring AI provider module for cloud chat and embeddings.
- Dynamic model resolver/cache for provider endpoint/model overrides.
- Spring AI
ChatClientexecution path withChatClientBuilderCustomizersupport. - Redacted Spring AI observation diagnostics.
- Request-scoped Spring AI advisors for trusted Java callers.
- Guarded AI Fabric action tool callbacks exposed through Spring AI.
- Spring AI MCP action bridge for connector-backed
mcp-toolactions.
Core Orchestration And Provider Runtime
- Shared structured JSON extraction is used by core intent parsing and Spring AI structured output
support. AICoreServicenow has stronger provider-purpose routing and content validation tests.- Provider availability checks and startup validation are more explicit.
- Transient input policy remains an AI Fabric policy layer and is verified independently of Spring AI.
- Confirmation routing now uses canonical structured decisions only.
Vector Providers
VectorDatabaseServiceexposes lifecycle/admin capabilities and diagnostics.- New vector readiness evaluator and health indicator.
- Shared vector contract tests for memory, Lucene, Qdrant, Weaviate, Milvus, and provider-specific
lifecycle behavior. - Lucene, Qdrant, Pinecone, Weaviate, Milvus, and memory providers have broader tests for metadata
filtering, scan, update/delete, count, clear, exact fetch, diagnostics, and provider-specific edge
behavior. - Pinecone has live integration test support.
- Qdrant supports REST/gRPC contract coverage.
RAG And Indexing
- RAG services have expanded tests around indexing content, source registry behavior, advanced
search, query expansion, reranking, context optimization, and property-driven defaults. - Spring AI RAG evaluation helper maps AI Fabric
RAGResponsedocuments into Spring AI evaluation
requests while redacting unsafe metadata. - Indexing gains Spring AI document reader/chunker helpers for trusted ingestion sources.
- Spring AI document indexing options bound chunk count, content length, metadata count, and metadata
value length.
Actions, Connector, Registry, And Relay
- Connector action execution has stricter response validation, bounded retry behavior, idempotency
handling, HMAC/API-key support, and stable error codes. - File-based connector catalogs have stronger validation.
- DB-backed action registry and Liquibase helper are tested.
- AI Action registry merges annotation, file, and DB contributors into a unified action registry and
rejects duplicate names. - Spring AI action tool callbacks preserve AI Fabric action authorization, hidden parameter, and
confirmation boundaries. - Relay action and retrieval services validate upstream behavior more strictly.
Governance, PII, Data Sync, And Privacy
- User data deletion now coordinates domain providers, behavior deletion, index catalog cleanup, and
vector removal with structured partial-failure reporting. - Retention cleanup now reports disabled, skipped, completed, and partial outcomes with failure
evidence. - PII detection has expanded property and service coverage.
- Data Sync push API now proves vector-space listing, upsert, delete, batch size limits, verified
auth context, and fail-closed authorization behavior.
Real Apps And Examples
The real apps now cover many release scenarios:
chat-capabilities-demo: local deterministic LLM for smoke profile, runtime vector search,
conversation tests, action confirmation/interceptor coverage, and data-sync runtime proof.ecommerce-store: data-sync client proof, admin reset, runtime request examples, and connector
request examples.smart-faq-assistant: seeded FAQ catalog, golden-answer quality service, RAG evidence checks.privacy-first-customer-facing-support: PII masking, governance deletion, indexed residue proof.it-support-action-bot: support/action authorization and confirmation smoke endpoints.relationship-query-crm-insights: relationship-query scenario smoke coverage.behavior-churn-signals: behavior signal scenario smoke coverage.migration-enabled-product-catalog: migration/backfill smoke coverage.
CI And Release Verification
Automatic CI now covers:
- release guard scripts
- framework module tests and install
- executable relay smoke
- integration test compilation
- minimal consumer compile
- real-app build/install
- offline real-app boot smoke
- ecommerce to chat data-sync runtime smoke
- deterministic P1 real-app scenario smoke
- Docker-backed vector provider contract tests
Manual/keyed verification now has scorecard-producing RealAPI runners for:
- core provider matrix
- chat-session RealAPI
- relationship-query RealAPI
- behavior RealAPI
- OpenAI/OpenAI/Lucene
- OpenAI/ONNX/Lucene
- ONNX fallback
External User Migration Plan
Use this checklist when upgrading an application from 0.2.1 to this release.
Step 1: Upgrade The Runtime Baseline
Verify:
- Java 21 is used by local builds, CI, and deployment images.
- Spring Boot dependency management is on 4.1.x.
- Your application no longer pins older Spring Framework, Spring Security, Jackson, or Jakarta
versions that conflict with Boot 4.1.x. - Maven is 3.9+.
Step 2: Update The AI Fabric BOM Version
Use the released AI Fabric BOM:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.github.loom-ai-labs</groupId>
<artifactId>ai-fabric-bom</artifactId>
<version>0.3.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>Step 3: Replace Native Cloud Provider Dependencies
Remove any direct dependencies on these artifacts:
<artifactId>ai-fabric-provider-openai</artifactId>
<artifactId>ai-fabric-provider-azure</artifactId>
<artifactId>ai-fabric-provider-anthropic</artifactId>
<artifactId>ai-fabric-provider-gemini</artifactId>
<artifactId>ai-fabric-provider-cohere</artifactId>Add:
<dependency>
<groupId>io.github.loom-ai-labs</groupId>
<artifactId>ai-fabric-provider-spring-ai</artifactId>
</dependency>Keep native ONNX only when you want local/offline embeddings:
<dependency>
<groupId>io.github.loom-ai-labs</groupId>
<artifactId>ai-fabric-onnx-starter</artifactId>
</dependency>Step 4: Recheck Provider Configuration
OpenAI example:
ai:
providers:
llm-provider: openai
embedding-provider: openai
openai:
enabled: true
api-key: ${OPENAI_API_KEY}
base-url: https://api.openai.com/v1
model: gpt-4o-mini
embedding-model: text-embedding-3-smallAzure OpenAI example:
ai:
providers:
llm-provider: azure
embedding-provider: azure
azure:
enabled: true
api-key: ${AZURE_OPENAI_API_KEY}
endpoint: ${AZURE_OPENAI_ENDPOINT}
deployment-name: ${AZURE_OPENAI_DEPLOYMENT_NAME}
api-version: ${AZURE_OPENAI_API_VERSION:}
embedding-deployment-name: ${AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME}Gemini example:
ai:
providers:
llm-provider: gemini
embedding-provider: gemini
gemini:
enabled: true
api-key: ${GEMINI_API_KEY}
model: gemini-2.5-flash
embedding-model: text-embedding-004Anthropic example:
ai:
providers:
llm-provider: anthropic
anthropic:
enabled: true
api-key: ${ANTHROPIC_API_KEY}
model: claude-3-7-sonnet-latestAnthropic is chat-only in this provider path. Select another embedding provider.
Step 5: Decide Between Native ONNX And Spring AI ONNX
Native ONNX:
ai:
providers:
embedding-provider: onnx
onnx:
model-path: ${AI_FABRIC_ONNX_MODEL_PATH:./models/embeddings/all-MiniLM-L6-v2.onnx}
tokenizer-path: ${AI_FABRIC_ONNX_TOKENIZER_PATH:./models/embeddings/tokenizer.json}
max-sequence-length: 512Spring AI ONNX:
ai:
providers:
embedding-provider: spring-ai-onnx
spring-ai-onnx:
model-uri: ${SPRING_AI_ONNX_MODEL_URI:}
tokenizer-uri: ${SPRING_AI_ONNX_TOKENIZER_URI:}
cache-enabled: true
dimensions: 384Both providers enforce nonblank input text and an 8000-character text limit at the provider
boundary.
Step 6: Rebuild Or Reindex Vector Stores When Dimensions Change
Check your embedding dimensions before reusing an existing vector index:
- Native ONNX and Spring AI ONNX default to 384 dimensions.
- OpenAI embedding dimensions depend on model and
ai.providers.openai.embedding-dimensions. - Gemini defaults to 768 dimensions in the Spring AI provider resolver.
If the dimension changes, clear/rebuild the vector index or run a full migration/backfill. Do not
reuse an index built with a different embedding dimension.
Step 7: Review Vector Provider Settings
For Lucene:
ai:
vector-db:
type: lucene
lucene:
index-path: ./data/lucene-vector-indexFor Qdrant:
ai:
vector-db:
type: qdrant
operations:
await-clear-consistency: true
await-clear-timeout-ms: 30000
fail-on-missing-payload-index: false
providers:
qdrant:
host: ${AI_PROVIDERS_QDRANT_HOST}
grpc-port: ${AI_PROVIDERS_QDRANT_GRPC_PORT:6334}
api-key: ${AI_PROVIDERS_QDRANT_API_KEY:}For memory in development or test:
ai:
vector-db:
type: memoryUse memory in production profiles only with an explicit operator acknowledgement:
ai:
vector-db:
memory:
allow-in-production: trueReadiness and diagnostics are now part of the vector contract. If ai-fabric-web and actuator are
enabled, review:
/api/ai/advanced-rag/healthfor vector provider diagnostics undervectorDatabase/actuator/health/vectorProviderfor the Spring Boot health component
Release checks can also validate captured JSON with:
.github/scripts/verify-vector-readiness-health.sh <health-json-file-or-url>Step 8: Update Cache Observability And External Cache Configuration
If you have cache metrics, cache dashboards, cache invalidation scripts, or external cache manager
configuration, migrate to the namespaced cache names listed above.
Step 9: Review Data Sync Auth
If you use ai-fabric-data-sync, confirm every Data Sync request includes:
vectorSpaceidtrace- verified auth context appropriate for your runtime boundary
Review the stricter normalization limits:
ai:
data-sync:
max-batch-size: 200
max-content-chars: 8000
max-field-value-chars: 2000
max-metadata-keys: 75Keep allow-trusted-platform-internal-sync-bypass=false unless your application sits behind a
trusted backend that verifies and injects the expected platform/system auth context. Verified
requests must carry data-sync:upsert or data-sync:delete for the requested operation.
Step 10: Review Action And Connector Configuration
If you use connector-backed actions, verify:
ai:
actions:
connector:
base-url: https://connector.example
execute-path: /actions/execute
api-key:
header: X-AIFABRIC-API-KEY
value: ${AI_ACTIONS_CONNECTOR_API_KEY:}
hmac:
secret: ${AI_ACTIONS_CONNECTOR_HMAC_SECRET:}If you use MCP-backed connector actions, configure the gateway or Spring AI MCP clients:
ai:
actions:
connector:
mcp-gateway:
base-url: https://mcp-gateway.internal
execute-path: /api/internal/mcp/actions/execute
api-key-header: X-MCP-GATEWAY-API-KEY
api-key: ${AI_MCP_GATEWAY_API_KEY:}Review file or DB action catalogs for:
- unique action names
- explicit
accessMode; connector catalogs now fail startup if it is missing - confirmation requirements for mutating actions
- hidden parameters supplied only by trusted server-side context
- stable idempotency handling for non-read actions
readActionResolutionEligibleonly onREADactions;READ_WRITEandWRITE_ONLYactions are
rejected for read-action planning
Annotated actions also require explicit accessMode and requiresConfirmation values. This keeps
action safety visible at the action boundary instead of inferred from names.
Step 11: Review Confirmation Prompt Customizations
If you override curated confirmation prompts, make sure the confirmation-resolution response is
valid JSON and uses only:
{
"decision": "POSITIVE",
"confidence": 1.0
}Use NEGATIVE or UNKNOWN as appropriate. Other labels are not interpreted.
Step 12: Opt Into Optional Spring AI Helpers Deliberately
Request-scoped Spring AI advisors and AI Fabric action tool callbacks are Java-only trusted server
helpers. Do not accept advisor names, tool names, hidden action context, or transient file URLs from
browser/user JSON and convert them directly into Spring AI objects.
RAG evaluation helpers are off by default:
ai:
infrastructure:
rag:
evaluation:
enabled: falseEnable them only for tests, quality gates, or trusted operator paths.
Step 13: Review Web Controller Exposure
ai-fabric-web now has independent controller toggles. Review exposed endpoints before deploying:
ai:
web:
enabled: true
base-path: /api/ai
controllers:
advanced-rag: true
compliance: true
migration: true
profile: true
security: trueDisable controllers your app does not expose publicly, and apply your application security policy at
the web boundary.
Step 14: Reverify Real Application Flows
Run at least:
mvn -B -V --no-transfer-progress -f ai-infrastructure-module/pom.xml install
mvn -B -V --no-transfer-progress -f examples/minimal-spring-boot/pom.xml compile
mvn -B -V --no-transfer-progress -f examples/real-apps/pom.xml install
.github/scripts/smoke-boot-realapps.sh
.github/scripts/smoke-ecommerce-chat-datasync.sh
.github/scripts/smoke-p1-realapp-scenarios.shFor vector provider parity with Docker:
.github/scripts/run-vector-container-contracts.shFor live provider evidence, run the RealAPI matrix with your own credentials:
cd ai-infrastructure-module/integration-Testing/integration-tests
bash ./run-provider-matrix-tests.sh "openai:openai:lucene" "" "all"
bash ./run-provider-matrix-tests.sh "openai:onnx:lucene" "" "all"Verification Evidence From This Branch
The branch contains committed test and documentation evidence for:
- P0 framework release gates in
docs/planning/0006-framework-capability-priority-map.md - P1 relay, connector, action, real-app, runtime auth, governance, and smoke proof
- P2 OpenAI/OpenAI/Lucene and OpenAI/ONNX/Lucene RealAPI proof
- Docker vector provider contracts for Qdrant, Weaviate, and Milvus
- Spring AI provider focused tests
- chat-session, relationship-query, and behavior RealAPI scorecards
Not included in this framework release proof:
- hosted Platform/Product admin UI regression
- managed deployment template rollout
- marketplace install workflows
- live hosted control-plane provisioning for every external vector SaaS provider
Those are Platform/Product verification lanes, not Java framework release gates.
Known Limitations
- Cohere chat/embedding execution is not active through this Spring AI provider path.
- Anthropic embeddings are not supported by this provider path.
- Existing vector indexes must be rebuilt when embedding dimensions change.
- Spring AI RAG evaluation helpers are intended for tests and release gates, not untrusted end-user
request paths.
Recommended Release Engineer Checklist
- Confirm all Maven modules and the release tag use
0.3.0. - Re-run the automatic CI gate.
- Run Docker vector provider contracts.
- Run at least the OpenAI/OpenAI/Lucene and OpenAI/ONNX/Lucene RealAPI scorecard lanes.
- Verify Maven Central staging metadata after version bump.
- Verify
README.mdlatest release link after publishing. - Keep Platform/Product live admin regression tracked separately from this framework release.