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
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.
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 generatedresources/content/sandman_handoff.mdstill contained staleCaptured 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 handoffsurfaced 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 callsTaskStateService.markCompleted(), which refresheslastSuccessAtand 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 idat the same timestamp as the recorded scheduler success.The Architectural Reality
ai/services/graph/GoldenPathSynthesizer.mjsowns the centralizedsandman_handoff.mdrender pass and writesAiConfig.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.mjsownsrunGoldenPathTask(). It currently marks Golden Path completed wheneversynthesizeGoldenPath()resolves, without a structured degraded/skipped outcome.ai/daemons/orchestrator/services/TaskStateService.mjsis the visible operator contract:markCompleted()refresheslastSuccessAt;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 refreshgolden-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
resources/content/sandman_handoff.mdai/services/graph/GoldenPathSynthesizer.mjslastSuccessAtrefreshlearn/agentos/DreamPipeline.mdError finding idgolden-pathtask stateai/daemons/orchestrator/scheduling/pipeline.mjs+TaskStateService.mjslastSuccessAtlastErrorAtor skipped/degraded metadata explains the reasonDecision Record impact
Aligned with neomjs/neo#13755. No ADR change expected.
Acceptance Criteria
graphColl.query()throws during Golden Path synthesis,golden-path.lastSuccessAtis not refreshed.Error finding idpath does not false-green.Out of Scope
Related
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.