LearnNewsExamplesServices
Frontmatter
id13978
titleGolden Path query failures must not false-green
stateClosed
labels
bugairegressionarchitecturemodel-experience
assigneesneo-gpt
createdAtJun 25, 2026, 1:49 AM
updatedAtJun 25, 2026, 2:07 AM
githubUrlhttps://github.com/neomjs/neo/issues/13978
authorneo-gpt
commentsCount0
parentIssue13755
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtJun 25, 2026, 2:07 AM

Golden Path query failures must not false-green

Closed v13.1.0/archive-v13-1-0-chunk-6 bugairegressionarchitecturemodel-experience
neo-gpt
neo-gpt commented on Jun 25, 2026, 1:49 AM

Context

A live Golden Path run on 2026-06-24 exposed a remaining neomjs/neo#13755 false-green path after the stale-handoff zero-candidate fix in neomjs/neo#13962/#13963. The scheduler state recorded golden-path.lastSuccessAt = 2026-06-24T23:00:37.505Z, but the generated resources/content/sandman_handoff.md still contained stale Captured at: 2026-06-22... sections and stale per-author PR blocks removed from the current renderer.

Release classification: post-release hardening under neomjs/neo#13755; boardless unless the operator explicitly promotes it.

Live latest-open sweep: checked latest 20 open issues at 2026-06-24T23:48:06Z. neomjs/neo#13755 is the parent epic; neomjs/neo#13962 is a closed sibling for the zero-semantic-candidate overwrite case; no equivalent open leaf found.

A2A in-flight claim sweep: checked latest 30 messages at 2026-06-24T23:48Z. Recent claims covered neomjs/neo#13835, neomjs/neo-agent-brain#134, neomjs/neo#13977, and neomjs/neo#12073; no overlapping Golden Path query-failure claim found.

KB/local duplicate sweep: local issue search found the closed neomjs/neo#13962 stale-handoff sibling and the neomjs/neo#13755 false-green parent. Knowledge Base ticket search for GoldenPathSynthesizer Chroma Error finding id false-green lastSuccessAt stale sandman handoff surfaced historical Chroma/query-error context and neomjs/neo#12073, but no equivalent open leaf.

The Problem

GoldenPathSynthesizer.synthesizeGoldenPath() catches unrecoverable semantic-query failures from Chroma and returns normally. runGoldenPathTask() then treats the resolved promise as success and calls TaskStateService.markCompleted(), which refreshes lastSuccessAt and records exit code 0.

That means a Golden Path task can fail before the centralized handoff rewrite, leave stale generated content on disk, and still tell operators and agents that the lane succeeded. This is exactly the neomjs/neo#13755 telemetry-lie class, now on the in-process Golden Path path rather than a child stdout path.

Observed failure signature: Failed to query semantic vectors from ChromaDB. ChromaServerError: Error executing plan: Internal error: Error finding id at the same timestamp as the recorded scheduler success.

The Architectural Reality

ai/services/graph/GoldenPathSynthesizer.mjs owns the centralized sandman_handoff.md render pass and writes AiConfig.handoffFilePath. It already has an honest zero-candidate render path after neomjs/neo#13963, but still has early-return paths before the write boundary for StorageRouter, collection, embedding, dimension, and Chroma query failures.

ai/daemons/orchestrator/scheduling/pipeline.mjs owns runGoldenPathTask(). It currently marks Golden Path completed whenever synthesizeGoldenPath() resolves, without a structured degraded/skipped outcome.

ai/daemons/orchestrator/services/TaskStateService.mjs is the visible operator contract: markCompleted() refreshes lastSuccessAt; markFailed() or an explicit skipped/degraded outcome is required for a non-success.

The Fix

Make Golden Path pre-render failures fail loud instead of resolving as success. The minimum acceptable shape is: a Chroma semantic-query failure must not call markCompleted() or refresh golden-path.lastSuccessAt.

Preferred shape: preserve the centralized overwrite contract by rendering a compact explicit degraded Golden Path section when the semantic route cannot be computed, then return or throw a structured outcome that lets the scheduler record degraded/skipped/failed state without claiming a successful route. Keep the orchestrator thin; the synthesizer owns render semantics, the scheduler owns task-state classification.

Contract Ledger Matrix

Target Surface Source of Authority Proposed Behavior Fallback Docs Evidence
resources/content/sandman_handoff.md ai/services/graph/GoldenPathSynthesizer.mjs Query failure produces fresh honest degraded handoff content or no success claim Existing stale content must not be paired with lastSuccessAt refresh learn/agentos/DreamPipeline.md Unit test with Chroma query throwing Error finding id
golden-path task state ai/daemons/orchestrator/scheduling/pipeline.mjs + TaskStateService.mjs Failed/degraded Golden Path does not refresh lastSuccessAt lastErrorAt or skipped/degraded metadata explains the reason neomjs/neo#13755 Orchestrator scheduling unit test

Decision Record impact

Aligned with neomjs/neo#13755. No ADR change expected.

Acceptance Criteria

  • When graphColl.query() throws during Golden Path synthesis, golden-path.lastSuccessAt is not refreshed.
  • The failure is visible through task state and/or health outcome with a specific semantic-query failure reason.
  • The handoff cannot remain stale while the scheduler records Golden Path success.
  • Unit coverage proves the Chroma Error finding id path does not false-green.
  • Existing zero-candidate overwrite coverage from neomjs/neo#13962/#13963 remains green.

Out of Scope

  • Repairing the underlying Chroma collection corruption.
  • Changing Golden Path ranking weights or candidate semantics.
  • Reworking heavy-maintenance fairness or REM scheduling.
  • Manually editing the generated handoff file.

Related

  • Parent epic: neomjs/neo#13755
  • Sibling: neomjs/neo#13962 / neomjs/neo#13963
  • Related Chroma corruption context: neomjs/neo#12450

Handoff Retrieval Hints

Search terms: GoldenPathSynthesizer Failed to query semantic vectors from ChromaDB Error finding id lastSuccessAt false-green, runGoldenPathTask markCompleted synthesizeGoldenPath returns, sandman_handoff stale captured at 2026-06-22 golden-path success.

tobiu closed this issue on Jun 25, 2026, 2:07 AM
tobiu referenced in commit 2a85cab - "fix(ai): fail loud on golden path query errors (#13978) (#13979)" on Jun 25, 2026, 2:07 AM