LearnNewsExamplesServices
Frontmatter
id17761
titleThe embedding lane's guide omits the abort/dispatch ordering fact
stateClosed
labels
documentationai
assigneesneo-opus-ada
createdAtAug 25, 2026, 4:16 PM
updatedAtAug 25, 2026, 5:10 PM
githubUrlhttps://github.com/neomjs/neo/issues/17761
authorneo-opus-ada
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtAug 25, 2026, 5:10 PM

The embedding lane's guide omits the abort/dispatch ordering fact

Closed Backlog/active-chunk-19 documentationai
neo-opus-ada
neo-opus-ada commented on Aug 25, 2026, 4:16 PM

Context

A delivery leaf, filed because a docs PR needs a close target and #17758 is already owned by PR #17759. Narrow by construction and expected to close the same hour.

learn/agentos/EmbeddingLane.md is the lane's owning document — written to end the "four owners, no owner" vacuum it describes in §6, where TextEmbeddingService — provider dispatch, request queue is one of the four boxes. Its stated purpose is that a composition fact should not have to be rediscovered by instrumenting a running deployment.

While repairing a flaky arm for #17758 I established such a fact by instrumenting runs, and the guide does not carry it. That is the gap this closes.

The Problem

When a caller aborts from inside the provider-timeout notification — the shape a circuit-open takes, where the hook defers the abort rather than raising synchronously — two macrotasks become live at once after the in-flight request rejects:

  1. the queue removing the waiting item, and
  2. the drain selecting and dispatching it.

Both are scheduled by the lane itself, so no caller-side await sequences them, and either can win. A span may therefore still reach a provider that has just proved unresponsive, and code or a test that assumes otherwise is asserting a race rather than a contract.

The guide has no entry for this. A reader asking "will the queued item be dispatched after an abort?" finds the queue described only as "A queue kept the client from competing with itself" (intro) and the §6 box label — neither of which answers it. The next person pays the instrumented-run cost again, which is exactly the cost the document exists to remove.

The Architectural Reality

  • learn/agentos/EmbeddingLane.md — the owning document; §6 maps the four-owner vacuum, ## Traps this document exists to remove collects facts of this class.
  • The synchronous-abort path in the same queue is ordered and does hold the guarantee; only the deferred path is open. The guide must say which, or it trades one wrong belief for another.
  • Distinct from the native-Ollama case in #16853, where the abort lands after dispatch and the concern is server-side work outliving it. Same lane, opposite sides of the dispatch boundary; conflating them sends a reader to the wrong repair.

The Fix

One trap entry in ## Traps this document exists to remove, prose only.

Recorded as a trap rather than a fifth §4 guard-interaction pair deliberately: §4's diagram shows four pairs, guide-authoring §3 requires render-verification, and there is no headless renderer on this seat. Prose-only keeps the diagram and the text in agreement rather than shipping an unverified diagram edit.

Acceptance Criteria

  • The guide states that the deferred-abort path does not order itself against the drain, and that the synchronous path does.
  • It distinguishes the case from the native-Ollama server-side one, so the two are not conflated.
  • No Mermaid change (no unverifiable render), no ticket or PR ids in the guide text per guide-authoring §4, ai:lint-guides clean.
  • No tree.json / PRIORITIES change (no new guide file) and no edit to pipeline-owned sitemap.xml / llms.txt.

Out of Scope

  • #17758 / PR #17759 — the flaky-arm repair itself. This is the durable half of the same finding, not the repair.
  • #16853 — the native-Ollama stranding defect. Referenced for contrast only.
  • Any change to the lane's behaviour. Documentation of what it already does.

Avoided Traps

  • Folding it into PR #17759. It was there briefly and that was wrong twice: the PR had already been approved, and a learn/ guide carries a different review bar than a test fix. Split out so it can be graded on its own merits.
  • Editing §4's diagram to add a fifth pair. Unverifiable render on this seat; a diagram that disagrees with its prose is the drift this guide calls out about itself.

Related

  • #17758 / PR #17759 — the repair that surfaced the fact.
  • #16853 — the contrasting native-Ollama case.
  • #17411 — the epic that produced the lane's owning document (closed sub #17413).

Live latest-open sweep: checked latest 12 open issues at 2026-08-25T14:15:32Z; A2A claim sweep over the last 10 messages at 14:15Z. No equivalent found; no open docs ticket hosts an EmbeddingLane addition.

Origin Session ID: be6b6eb4-dabe-4deb-9924-7c92335c69ff

Retrieval Hint: query_raw_memories("embedding lane deferred abort does not order against the drain")

⚖️ Ada · @neo-opus-ada · Claude Opus 5 · Claude Code

tobiu referenced in commit ffc5661 - "docs(agentos): the abort/dispatch race is a lane fact, not a test artifact (#17758) (#17760) on Aug 25, 2026, 5:10 PM
tobiu closed this issue on Aug 25, 2026, 5:10 PM