LearnNewsExamplesServices
Frontmatter
id10087
title[enhancement] ORPHAN_CONCEPT signal — distinct display channel in sandman_handoff.md
stateClosed
labels
enhancementai
assigneestobiu
createdAtApr 19, 2026, 12:31 PM
updatedAtApr 19, 2026, 6:19 PM
githubUrlhttps://github.com/neomjs/neo/issues/10087
authortobiu
commentsCount0
parentIssue10030
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtApr 19, 2026, 5:12 PM

[enhancement] ORPHAN_CONCEPT signal — distinct display channel in sandman_handoff.md

tobiu
tobiu commented on Apr 19, 2026, 12:31 PM

Context

PR #10084 (resolves #10035) detects orphan concepts (CONCEPT nodes with no IMPLEMENTED_BY edge — concepts that exist in the ontology but aren't anchored to any source code) and emits them as logger.warn during ingestion. The choice to suppress them from the capability-gap channel was deliberate: orphans are ontology data-quality signals, not coverage gaps, and conflating them would dilute the signal GoldenPathSynthesizer consumes for sandman_handoff.md.

As the ontology grows (#10050 description enrichment, #10036 Memory Core concept discovery, #10037 ChromaDB embedding), orphans may become frequent enough that invisibility becomes the wrong default. A dedicated display channel is the right fix — keeps the main gap channel clean while making orphans actionable for curators.

The Fix

  1. ConceptIngestor emits [ORPHAN_CONCEPT] entries to a new property channel (e.g., node.properties.dataQualityFlag to keep it separate from capabilityGap) OR to the same capabilityGap JSON array with the distinct tag — decide during implementation based on which is cleaner downstream
  2. GoldenPathSynthesizer categorizes [ORPHAN_CONCEPT] into a new array parallel to testGaps / guideGaps / exampleGaps
  3. New rendering section in sandman_handoff.md: ### ⚠️ Orphaned Concepts (X of Y items) with the same 5-item limit pattern
  4. TTL pruning applies uniformly

Decision Needed During Implementation

Should ORPHAN_CONCEPT share the capabilityGap property channel with TEST_GAP/GUIDE_GAP/EXAMPLE_GAP, or live on its own property? Sharing reduces GoldenPathSynthesizer's node-scanning work (one loop not two); separating keeps the "coverage gap" semantics pure. Lean: share the channel, since the tag-prefix categorization pattern already handles taxonomy separation downstream.

Acceptance Criteria

  • ConceptIngestor attaches [ORPHAN_CONCEPT] entries to orphan nodes
  • GoldenPathSynthesizer categorizes the new tag + renders dedicated section
  • logger.warn simplified — warn only on first detection per orphan (TTL-based dedup) or removed entirely if graph persistence is enough signal
  • Existing tests still pass
  • New test: ingesting an orphan concept causes ⚠️ Orphaned Concepts section to appear in handoff

Origin Session ID

62d6f155-e57f-4279-9b59-36c9e4ecbc5e — flagged as out-of-scope in PR #10084 body

Related

tobiu added the enhancement label on Apr 19, 2026, 12:31 PM
tobiu added the ai label on Apr 19, 2026, 12:31 PM
tobiu added parent issue #10030 on Apr 19, 2026, 12:32 PM
tobiu cross-referenced by #10030 on Apr 19, 2026, 12:33 PM
tobiu referenced in commit 6f0263f - "refactor(ai): hoist concept-graph gap pass to cycle-scope (#10085) on Apr 19, 2026, 4:16 PM
tobiu cross-referenced by PR #10100 on Apr 19, 2026, 4:17 PM
tobiu cross-referenced by #10085 on Apr 19, 2026, 4:19 PM
tobiu referenced in commit 45da7fc - "refactor(ai): hoist concept-graph gap pass to cycle-scope (#10085) (#10100) on Apr 19, 2026, 4:45 PM
tobiu assigned to @tobiu on Apr 19, 2026, 4:47 PM
tobiu referenced in commit b91d523 - "feat(ai): ORPHAN_CONCEPT signal + ⚠️ Orphaned Concepts handoff section (#10087) on Apr 19, 2026, 4:58 PM
tobiu cross-referenced by PR #10101 on Apr 19, 2026, 4:59 PM
tobiu referenced in commit b00125b - "test(ai): co-emission spec + symmetric DreamService afterEach (#10087) on Apr 19, 2026, 5:11 PM
tobiu closed this issue on Apr 19, 2026, 5:12 PM
tobiu referenced in commit 9d10d18 - "feat(ai): ORPHAN_CONCEPT signal + ⚠️ Orphaned Concepts handoff section (#10087) (#10101) on Apr 19, 2026, 5:12 PM
tobiu referenced in commit db5bdae - "feat(ai): config-lift guideGapWeightThreshold to aiConfig.data (#10086) on Apr 19, 2026, 5:19 PM
tobiu cross-referenced by PR #10102 on Apr 19, 2026, 5:20 PM
tobiu referenced in commit 45b6f63 - "feat(ai): config-lift guideGapWeightThreshold to aiConfig.data (#10086) (#10102) on Apr 19, 2026, 5:33 PM
tobiu cross-referenced by #10104 on Apr 19, 2026, 5:39 PM
tobiu cross-referenced by PR #10105 on Apr 19, 2026, 6:05 PM
tobiu cross-referenced by PR #10116 on Apr 20, 2026, 1:40 AM