LearnNewsExamplesServices
Frontmatter
id14130
titleSlice B: Orchestrator live-Chroma dimension gatherer for the data-integrity runner
stateClosed
labels
enhancementaiarchitecture
assigneesneo-opus-ada
createdAtJun 26, 2026, 7:33 PM
updatedAtJun 27, 2026, 7:37 PM
githubUrlhttps://github.com/neomjs/neo/issues/14130
authorneo-opus-vega
commentsCount2
parentIssuenull
subIssues
14215 #14130 slice-1: dimensionConsistencyGatherer function (live-Chroma audit→producer, off dev)
14225 Data-integrity runner: wire the dimension-consistency gatherer into the evidence seam (#14130 slice-2)
subIssuesCompleted2
subIssuesTotal2
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtJun 27, 2026, 7:37 PM

Slice B: Orchestrator live-Chroma dimension gatherer for the data-integrity runner

Closed v13.1.0/archive-v13-1-0-chunk-7 enhancementaiarchitecture
neo-opus-vega
neo-opus-vega commented on Jun 26, 2026, 7:33 PM

Context

Slice A (the runner-seam) wired the dimension-consistency producer into DataIntegrityDiagnosisService through an OPTIONAL injected dimensionGatherer (pure + unit-tested, no live Chroma). This is Slice B: the live-Chroma binding that injects a real dimension gatherer so the signal goes LIVE on the hourly data-integrity sweep.

The work

A dataIntegrityDimensionGatherer getter on Orchestrator (sibling of the existing dataIntegrityCoverageGatherer) that:

  • connects a live Chroma client via ai/services/shared/vector/chromaClientPrimitives.mjs (the dummy embedding fn is needed only for schema hydration; a read-only .get does not call the embedder, so it is not gated by the slow embed-canary),
  • resolves the live collection handles for ['neo-agent-memory','neo-agent-sessions'],
  • calls auditCollectionVectorDimensions per collection with the vectorDimension SSOT leaf (ai/config.template.mjs:340, default 4096) read at the use-site,
  • returns samples: [{collection, expectedDimension, mismatchedVectorCount}],
  • and is injected into the runner construction alongside the already-injected coverageGatherer.

The getter MUST return [] on a connection failure (never throw): the runner treats an absent/failing dimension gatherer as "skip dimension this cycle" without suppressing the proven coverage signal (Slice A's gatherDimensionSamples already degrades this way; the getter must not defeat it by throwing).

Acceptance Criteria

  • The Orchestrator injects a live dimension gatherer into DataIntegrityDiagnosisService.
  • A wrong-dimension vector in a Memory Core collection produces an escalation on the hourly sweep.
  • A Chroma connection failure yields empty samples (dimension skipped), never a thrown gather or a suppressed coverage signal.
  • The offline-coverage / live-dimension split is documented at the use-site.

Related

Slice A runner-seam (the immediately-preceding ticket), the dimension producer / the gatherer it consumes, #14117 (the live loop), #14039 (v13.1 epic), #14081 (binary-split rebatch — a realistic wrong-dimension source).

Authored by Vega (Claude Opus 4.8, Claude Code).

tobiu referenced in commit 5ab02e7 - "feat(ai): dimensionConsistencyGatherer — live-Chroma audit-to-producer wire-up (#14130) (#14216) on Jun 27, 2026, 9:35 AM
tobiu referenced in commit 740bb1e - "feat(ai): wire dimension-consistency gatherer into the data-integrity runner evidence seam (#14225) (#14226) on Jun 27, 2026, 6:08 PM
tobiu referenced in commit 831aefa - "fix(ai): dimension-gatherer degrade-not-throw on Chroma connection failure (#14130) (#14258) on Jun 27, 2026, 7:37 PM
tobiu closed this issue on Jun 27, 2026, 7:37 PM