You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(ai): aiConfig realm split — KB + MC inherit Tier-1 leaves via the getParent chain (#12166)
Stage 2 of #12166: activate the parent chain by removing per-server snapshots of deployment-wide
realm leaves so KB + MC inherit them from the Tier-1 root (Neo.ai.Config).
Knowledge Base:
- Drop the same-path snapshots — backupPath, auth.* (7 leaves), and the verbose
dummyEmbeddingFunction literal — so they chain-inherit from Tier-1. This resolves the
dummyEmbeddingFunction child-snapshot anti-pattern (no child re-declares a parent-owned leaf).
- Keep the top-level chroma aliases (host/port/path) + the AiConfig import: KB exposes chroma at the
top level while Tier-1 owns engines.chroma.*, so collapsing them needs a consumer-read change
(KBConfig.host -> KBConfig.engines.chroma.host) = S3/S4 codemod. Flagged, deferred.
Memory Core:
- All 35 snapshots are same-path (MC keeps engines.chroma.* nested) -> all inherited: auth.*, the
three providers, ollama.*, openAiCompatible.*, localModels (read keyed), vectorDimension,
modelName, embeddingModel, engines.chroma.*, backupPath.
- No value ref remains, so the AiConfig import becomes a bare side-effect import (loads the Tier-1
realm root for the chain; no value snapshot). materializeServerConfigTemplate is extended to
rewrite side-effect imports template->overlay for the generated runtime config.
Tests:
- KB + MC config specs: whole-namespace toEqual -> keyed assertions (namespace enumeration is the
deferred local-only getTopLevelDataKeys edge); env tests -> env-at-owner (fresh Tier-1 with env +
inheriting child); beforeAll installs a deterministic Tier-1 realm root (the template's side-effect
import only registers Neo.ai.Config on first module-eval, so a reused Playwright worker would
otherwise see it unset and break inheritance non-deterministically).
- Orchestrator.invariants: getParent() makes a fresh BaseConfig inherit the registered realm root, so
the mlx/lms undefined-safe tests detach the root to simulate a genuinely-missing namespace.
Verified: config+base 30/30, KB/MC consumer + orchestrator + initServerConfigs + ConfigCompleteness
suites green; node smoke confirms KB + MC inherit the realm via createConfigProxy -> getParent chain.
0 commit comments