feat(ai): Phase 6 — MEAI default-on cutover - #236
Merged
Conversation
Map current model invocation, sanitization, audit, policy packs, RAG, and host DI seams to proposed Microsoft.Extensions.AI concepts for the governed pipeline migration. Co-authored-by: IanFrelinger <IanFrelinger@users.noreply.github.com>
Add Nexo.AI.Pipeline with keyed local:ollama and local:onnx chat clients, wire optional registration through hosting Phase 13b when Nexo:UseMeaiPipeline is enabled (default off), and cover registration with FakeChatClient tests. Legacy IProviderFactory path remains default. Co-authored-by: IanFrelinger <IanFrelinger@users.noreply.github.com>
Introduce UseNexoGovernance with fixed PolicyGate → Sanitizing → Auditing order on every keyed IChatClient, plus unit tests for deny short-circuit, PII redaction, audit outcomes, and composition/architecture guarantees. Co-authored-by: IanFrelinger <IanFrelinger@users.noreply.github.com>
Introduce policy × availability routing outside per-target governance stacks, with audited route decisions and a table-driven matrix of local/cloud fallback scenarios. Co-authored-by: IanFrelinger <IanFrelinger@users.noreply.github.com>
Register cloud:bedrock:{fast,balanced,heavy} with configurable model ids,
reuse the default AWS credential chain, keep Bedrock SDK clients out of DI,
and cover routing/sanitization/audit with fake-transport tests.
Co-authored-by: IanFrelinger <IanFrelinger@users.noreply.github.com>
Introduce an in-process Microsoft.Extensions.VectorData store, sanitizing/ auditing embedding generators, VectorDataRagService, and a CLI reindex command while leaving the legacy RAG path read-only. Align AWS SDK CPM to v4 so Bedrock MEAI and DynamoDB co-restore cleanly. Co-authored-by: IanFrelinger <IanFrelinger@users.noreply.github.com>
Default Nexo:UseMeaiPipeline to on (opt out with 0/false). Wire IModel through MeaiBackedModel over the governed IChatClient, make HotSwappableModel accept any IModel agentic leaf, and register VectorData as the default IRAGService. Add docs/governed-pipeline.md and make meai-pipeline-gate part of kernel-gate. Keep IProviderFactory for non-chat callers. Co-authored-by: IanFrelinger <IanFrelinger@users.noreply.github.com>
Remove application/ CLI reindex wiring so master layer-boundary passes (CLI belongs on an application/* PR). Add Nexo.AI.Pipeline to the Hosting pack scripts, and cover default-on MEAI + VectorData RAG wiring in HostingE2ESmoke ProdStyle tests. Co-authored-by: IanFrelinger <IanFrelinger@users.noreply.github.com>
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Phase 6 MEAI cutover: the governed pipeline is on by default,
IModelroutes through MEAI, and VectorData is the defaultIRAGService.Changes
Nexo:UseMeaiPipeline=false/NEXO_USE_MEAI_PIPELINE=0MeaiBackedModel—IModel→ governed / routedIChatClientHotSwappableModelaccepts anyIModelagentic leaf (MEAI or legacyProviderBackedModel)MeaiVectorDataRagAdapteras defaultIRAGServicedocs/governed-pipeline.mdmake meai-pipeline-gateincluded inmake kernel-gateIProviderFactory/ legacy RAG types remain for non-chat / opt-out callersStacking
Includes Phases 0–5. Prefer merge after #235 (or take this tip alone).
Testing
dotnet test src/Nexo.Tests.AI.Pipeline— 36 passed (net8 + net9)make meai-pipeline-gatedotnet build src/Nexo.Hostingmake kernel-gatein CITesting strategy (blast radius)
AddNexomake meai-pipeline-gate(now part of kernel-gate)HotSwappableModel)