Frontmatter
| id | 10032 |
| title | ConceptService & Source Code Wiring |
| state | Closed |
| labels | enhancementaiarchitecture |
| assignees | tobiu |
| createdAt | Apr 15, 2026, 11:56 PM |
| updatedAt | Apr 17, 2026, 3:14 PM |
| githubUrl | https://github.com/neomjs/neo/issues/10032 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 10030 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [x] 10031 JSONL Schema & Concept Seed Extraction |
| blocking | [x] 10037 ChromaDB Concept Embedding & Hybrid Search, [x] 10033 Concept Graph Unit Tests |
| closedAt | Apr 17, 2026, 3:14 PM |
ConceptService & Source Code Wiring
tobiu cross-referenced by #10033 on Apr 15, 2026, 11:57 PM
tobiu cross-referenced by #10034 on Apr 15, 2026, 11:57 PM
tobiu cross-referenced by #10035 on Apr 15, 2026, 11:57 PM
tobiu cross-referenced by #10036 on Apr 15, 2026, 11:58 PM
tobiu added parent issue #10030 on Apr 15, 2026, 11:58 PM
tobiu marked this issue as being blocked by #10031 on Apr 15, 2026, 11:58 PM
tobiu marked this issue as blocking #10033 on Apr 15, 2026, 11:58 PM
tobiu marked this issue as blocking #10034 on Apr 15, 2026, 11:58 PM

tobiu
Apr 16, 2026, 12:11 AM
Input from Claude Opus 4.6 (Antigravity):
❋ Enhancement: Hybrid ChromaDB Integration
During planning, we identified that concept nodes (with their title + description) are ideal candidates for ChromaDB embedding as
type: 'concept'documents. This enables:
queryDocuments({query: "how does reactivity work?", type: "concept"})→ ranked concept nodes by vector similarityqueryDocuments({query: "Neo.core.EffectManager", type: "concept"})→ automated IMPLEMENTED_BY wiring discovery- Cross-type semantic comparison: concept descriptions vs guide chunks → automated EXPLAINED_BY validation
Concept descriptions are short (1-3 sentences) — no semantic dilution risk. The three representations become complementary:
- JSONL → structure (hierarchy, typed edges)
- ChromaDB → similarity (semantic search, discovery)
- SQLite Native Graph (Phase 3) → traversal (BFS, frontier routing)
Architectural note: ConceptService should live in the SDK (
ai/services.mjs), not as a new MCP server. UsesKB_ChromaManagerdirectly through SDK imports. This aligns with the wider strategy of moving business logic into the SDK and keeping MCP servers as thin transport layers.
tobiu cross-referenced by #10037 on Apr 16, 2026, 12:12 AM
tobiu marked this issue as blocking #10037 on Apr 16, 2026, 12:12 AM
tobiu cross-referenced by PR #10047 on Apr 17, 2026, 9:27 AM
tobiu assigned to @tobiu on Apr 17, 2026, 10:25 AM
tobiu cross-referenced by PR #10048 on Apr 17, 2026, 3:08 PM
tobiu closed this issue on Apr 17, 2026, 3:14 PM
tobiu cross-referenced by PR #10052 on Apr 17, 2026, 4:30 PM
tobiu cross-referenced by PR #10078 on Apr 19, 2026, 10:28 AM
tobiu cross-referenced by #10080 on Apr 19, 2026, 11:16 AM
tobiu cross-referenced by PR #10084 on Apr 19, 2026, 12:20 PM
tobiu cross-referenced by #10030 on Apr 19, 2026, 12:33 PM
Objective
Build the
ConceptServicethat loads the JSONL concept graph and provides query APIs. Wire concepts to source files via IMPLEMENTED_BY and EXPLAINED_BY edges.Context
Phase 1, Step 2 of the Concept Ontology epic (#10030). Depends on the JSONL schema from #10031.
Deliverables
1. ConceptService Class
Location:
ai/graph/ConceptService.mjsCore APIs:
loadGraph(nodesPath, edgesPath)— Parse JSONL, build in-memory graphgetConceptTree(maxTier)— Hierarchical tree serializationgetConceptCoverage(conceptId)— Returns EXPLAINED_BY, IMPLEMENTED_BY, EXEMPLIFIED_BY edgesfindGuideGaps(minWeight)— Concepts missing EXPLAINED_BY edges, sorted by weightclassifyConcept(classPath)— Which concept(s) does this class implement?serializeForLLM(maxTier)— Compact tree format for agent context priming2. Source Code Wiring
Script or service method that:
src/**/*.mjs, extracts@classand@extendsfrom JSDoc headerssrc/data/*→ "Data Layer" conceptsrc/state/*→ "State Provider" conceptsrc/worker/*→ "Worker Architecture" conceptIMPLEMENTED_BYedges inedges.jsonl3. Guide Wiring
Map
learn/tree.jsonentries to the concept graph viaEXPLAINED_BYedges.4. SDK Registration
Export
ConceptServicefromai/services.mjs.Weight Calculation
Acceptance Criteria
src/classeslearn/guides/entriesserializeForLLM()produces a compact tree under 100 linesai/services.mjsOrigin Session ID: 496c0120-29aa-4b02-a804-d5a32ff6b5eb