Context
A live Golden Path run on 2026-06-24 exposed a remaining #13755 false-green path after the stale-handoff zero-candidate fix in #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 #13755; boardless unless the operator explicitly promotes it.
Live latest-open sweep: checked latest 20 open issues at 2026-06-24T23:48:06Z. #13755 is the parent epic; #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 #13835, #13936, #13977, and #12073; no overlapping Golden Path query-failure claim found.
KB/local duplicate sweep: local issue search found the closed #13962 stale-handoff sibling and the #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 #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 #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 #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 |
#13755 |
Orchestrator scheduling unit test |
Decision Record impact
Aligned with #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
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 #13755 false-green path after the stale-handoff zero-candidate fix in #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 #13755; boardless unless the operator explicitly promotes it.
Live latest-open sweep: checked latest 20 open issues at 2026-06-24T23:48:06Z. #13755 is the parent epic; #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 #13835, #13936, #13977, and #12073; no overlapping Golden Path query-failure claim found.
KB/local duplicate sweep: local issue search found the closed #13962 stale-handoff sibling and the #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 #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 #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 #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 #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.