LearnNewsExamplesServices
Frontmatter
id10120
titleGolden Path: external-visibility-gap signal + adaptive weighting
stateOpen
labels
enhancementaiarchitecture
assignees[]
createdAtApr 20, 2026, 4:07 AM
updatedAt12:21 PM
githubUrlhttps://github.com/neomjs/neo/issues/10120
authortobiu
commentsCount4
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]

Golden Path: external-visibility-gap signal + adaptive weighting

Open Backlog/active-chunk-1 enhancementaiarchitecture
tobiu
tobiu commented on Apr 20, 2026, 4:07 AM

Context

Session 07f601dc-353a-44d2-a373-18da2a0d305a surfaced a structural gap in the Golden Path ranking algorithm. Today's scoring operates on internal signals only — semantic distance, structural weight, bug label, blocked filter, community boost, needs-re-triage penalty — all derived from the Native Edge Graph. External-facing metrics (repo traffic, star trends, blog cadence, sponsors, LinkedIn reach, external blog mentions) are not ingested.

Empirical motivation: Neo has ~21,000 commits, 3,100 stars, 64k unique LinkedIn reach on one DevIndex post, zero external blog mentions by third parties, and near-zero enterprise adoption after 6 years. The production engine is prolific; the external-visibility output is systemically under-produced in a way the Golden Path cannot currently see.

⚠️ Convergence correction (Emmy + Grace, 2026-07-12 — supersedes The Fix / ACs below)

Peer convergence corrected this ticket's prescription: the goal is valid + high-ROI, but the fix is NOT a bespoke scorer ranking on external deficits (that conflates "what is happening" with "what Neo chose to prioritize" — an automatic deficit-amplification loop). Per ADR 0033 (Direction Contract): declared intent weights are operator-owned; direction influence is additive, never gating. The clean split (@neo-gpt-emmy):

  1. Measurement producer — hermetic injected readers emit schema-valid METRIC records (traffic/stars/cadence/sponsor), stale/null on fault, reporting-only; composes with #14442. Output shape pinned by @neo-opus-grace (#10120→#14442): the 5 fields I proposed (claimClass, falsifyingQuery, windowSemantics, confoundDisclaimer, publicFlag) ARE the shared METRIC contract, plus identity + append-only period governance and claimClass: 'external-reported'.
  2. Declared direction — visibility/traction as a stable BUSINESS_GOAL/EVOLUTION_GOAL; operator owns its intent weight; work-to-goal via graph edges, not label inference.
  3. GP-v2 consumption — after #14472/#14565's consumer contract, goal alignment enters the ISSUE/DISCUSSION route as a bounded additive term (never gating); raw deficits inform the human goal-weight decision, never silently mint strategy.

My hermetic-reader discipline survives as the producer implementation; the output/authority shape is the above. This is the GP-v2 input layer of the one next-lane-awareness system (co-consumers: the stop-hook forward-pull #15087, Bird Views #14435/#15088). aligned-with ADR 0033; consumes #14442; interops #14472/#14565. The v13.2 boundary: reporting can land independently; ranking evolution follows the GP-v2/direction gates. A full Fix/AC rewrite + Contract Ledger (METRIC production / goal authority / GP-v2 consumption / failure posture / public-vs-private) is the next repair pass, against Grace's business-engine substrate.

The Problem

When visibility-gap is high but internal technical ranking dominates Golden Path, every session picks up technical tickets. Blog tickets (#9849, #9850, #9853, #9854, #10074) and community work accumulate without being prioritized. The feedback loop that would redirect some capacity toward external-visibility work does not exist — the ranking function has no term that recognizes "Neo's technical output is compounding but its external legibility is not."

Content cadence collapsed 5 months ago (last external post 2025-11-23); five blog tickets sit open; sponsor income is literally zero; the Gemini 3 blog flop revealed that reach ≠ conversion (64,568 LinkedIn reach → ~2 GitHub stars per the session analysis). These are signals the Golden Path should weight.

The Architectural Reality

  • buildScripts/ai/runGoldenPath.mjs — the synthesis phase where scoring applies. Extensible.
  • ai/daemons/DreamService.mjs — REM pipeline including Phase 5 Golden Path Synthesis. Already has the scoring formula (semanticScore × 2) + structuralWeight with modifiers.
  • Data sources available:
    • apps/portal/resources/data/blog.json + medium_blog.json — publication dates
    • GitHub API — repo traffic (14-day views/unique), star count + trend, sponsors
    • resources/content/issues/*.md — open blog ticket count + ages (Blog Post label filter)
    • resources/content/release-notes/*.md — release cadence
    • LinkedIn analytics (manual input or via API if available)
  • Existing pattern for signal ingestion: Phase 3 Capability Gap Inference is deterministic (no LLM), scans the graph, produces [TEST_GAP] / [GUIDE_GAP] properties. An external-visibility signal follows the same pattern — deterministic, derived from filesystem + API data, attached as graph node properties.

The Fix

  1. Compute externalVisibilitySignal per REM cycle, deterministic, as an extension of Phase 3 or a new phase between 3 and 4:
    • daysSinceLastBlog — max of site-blog and medium-blog dates
    • daysSinceLastMedium, daysSinceLastLinkedIn — per-channel cadence
    • daysSinceLastRelease — from resources/content/release-notes/*.md
    • starTrend30d — delta vs 30 days ago (if GitHub API accessible)
    • trafficUnique14d — 14-day unique visitors
    • sponsorsCount + sponsorsMRR
    • openBlogTicketCount + oldestDraftAgeDays
  2. New ranking dimension: visibilityGapWeight, computed from the signal set. Tickets with Blog Post / documentation / ai-generated labels, case-study work, community engagement — all receive a boost proportional to visibilityGapWeight.
  3. New sandman_handoff section: ## External Visibility — listing the raw metrics + adaptive weight + the specific tickets most likely to close the gap, sorted by age.
  4. Adaptive behavior: when visibility-gap is high, content and community tickets move up the ranked list alongside technical work. When it's low (if/when), tactical work dominates as today.

Acceptance Criteria

  • externalVisibilitySignal computed per REM cycle from the metrics above; persisted on graph with TTL
  • visibilityGapWeight added as ranking-formula term with config-driven multiplier
  • sandman_handoff.md renders ## External Visibility section when visibility-gap > threshold; includes raw metrics + ranked content-ticket list
  • blog.json / medium_blog.json path structure is respected; GitHub API calls are cached + rate-limit-safe
  • Threshold + multiplier are config-driven (not hardcoded) so sensitivity can be tuned without code changes
  • Post-merge: next sandman run surfaces current state (should be loud — 150+ days since last blog, 5 open blog tickets, 0 sponsors)

Out of Scope

  • Actually writing the blog posts — picking up #9849 / #9850 / #9853 / #9854 / #10074 is discrete work, not this ticket
  • Auto-publishing — human-in-loop review gate remains per authorship-respect rule (#10109 extension)
  • GTM strategy outside Golden Path — enterprise motion, funding, partnerships are orthogonal; this ticket only adapts the internal scheduling substrate
  • LinkedIn / external-platform publishing automation — drafts-only boundary per #10118 + #10109 discussions

Avoided Traps

  • "Nag loop": the signal is a weighting term, not a notification. It shifts ranking, it doesn't generate reminders.
  • Prioritizing content over correctness: technical bugs keep their +1.0 structural weight bump. Visibility gap is an additional term, not a replacement.
  • Collapsing "visibility" into "contributor community": these are different gaps needing different signals. The scope above is visibility. Contributor community (Discord engagement, PRs-from-externals, issues-from-externals) could be a sibling signal but is deliberately separate.
  • Auto-posting or auto-drafting: the loop changes ranking. It does not author content. Authorship respect rule (#10109) applies.
  • Treating the signal set as complete: the 8 metrics above are a starting point. Future iterations can add citation counts, HN rank, conference CFP acceptances, etc.

Related

  • Surfaced during: session 07f601dc brainstorm — LinkedIn conversion analysis (64k reach → 2 stars), BMWK trauma recalibration, Client as load-bearing case, "Claude Code on Neo" agent-harness pitch as artifact-based conversion (filed as companion Discussion)
  • Content backlog this ticket affects ranking for: #9849, #9850, #9853, #9854, #10074
  • Dream Pipeline architecture: learn/agentos/DreamPipeline.md §Phase 5 Golden Path Synthesis
  • Complementary work: #10030 Concepts (richer semantic substrate for visibility signals), #9999 Multi-user Memory Core (swarm tenant isolation for shared visibility signals across users), #10118 create-skill downstream manifest requirement
  • Possible graduation path: companion Discussion on Multi-window Neo agent harness — if that harness ships, it becomes a primary visibility-conversion artifact, and the Golden Path would weight its progress as first-class

Origin Session ID

07f601dc-353a-44d2-a373-18da2a0d305a

tobiu added the enhancement label on Apr 20, 2026, 4:07 AM
tobiu added the ai label on Apr 20, 2026, 4:07 AM
tobiu added the architecture label on Apr 20, 2026, 4:07 AM
tobiu removed the not-code-ready label on Jul 6, 2026, 3:21 PM
tobiu removed the needs-design label on Jul 6, 2026, 3:22 PM