Skip to content

Late-recall regression reports recall instead of recall:late in combined gate #1655

Open

Description

@santoshkumarradha

What happened

The independent combined gate for PR #1632 at 458d1be73b513f2b43afebaa544677ac5353d365 failed one session regression on 2026-09-28:

TestARecallThatLandsAfterTheFirstWordRidesTheNextStep
loop_speed_test.go:421: the decomposition names [recall], want the block written down as late
--- FAIL: TestARecallThatLandsAfterTheFirstWordRidesTheNextStep (0.67s)

The session package failed one of eight shards; the eight interface shards and all seven other affected packages passed. Build, static analysis, manual/change-entry checks and all law checks passed. GitHub CI passed the same commit (run), so this observation must not be described as a deterministic reproduction or dismissed as a passing rerun. The independent gate exited 2.

Replication

No model calls are required. Check out the exact published commit, then run the observed gate:

git checkout 458d1be73b513f2b43afebaa544677ac5353d365
GOMAXPROCS=4 GOFLAGS=-p=2 make pr-ready BASE=b267d390078494f659ade14fe8b31daee255771a

The existing fixture can be selected for investigation with:

GOMAXPROCS=4 GOFLAGS=-p=2 go test -count=1 -timeout 15m ./internal/session -run '^TestARecallThatLandsAfterTheFirstWordRidesTheNextStep$'

Its isolated failure frequency has not yet been measured. The fixture emits the first word, delays its first response by 400ms, and requests recall with a 100ms delay. Determine whether the ordering assumed by the fixture is guaranteed before attributing the failure to scheduling or changing runtime behavior.

Where

internal/session/loop_speed_test.go, TestARecallThatLandsAfterTheFirstWordRidesTheNextStep, the paceCompleter/paceAgent fixture and the production recall/first-word boundary they exercise.

Expected behavior and acceptance

  • Through the real session submission path with its scripted completer, recall that arrives after the first emitted word is recorded as recall:late, does not cut/re-ask that response, and appears in the next request.
  • Preserve all three existing assertions. Use explicit ownership/order synchronization if the fixture is racing; do not merely enlarge sleeps, waive the test or add it to a skip list.
  • Establish a before/after reproduction for the actual cause, then pass the affected session suite and combined gate on the corrected revision.
  • If investigation finds a user-visible runtime defect, verify the corresponding ordinary workflow and update its manual/change entry. No separate live user-facing recall failure has been established yet.

Batch boundary

The owner froze #1632 and requested an honest review handoff with this failing independent gate disclosed. This issue belongs to the next batch; do not add its fix to the frozen #1632 revision.

Activity

  1. santoshkumarradha commented on Sep 28, 2026

    @santoshkumarradha
    MemberAuthor

    The reviewed correction is now integrated into existing draft PR #1656 at 70babe7d9, alongside the provider-refresh correction for #1508. Recall cancellation and its re-ask outcome now publish under the same lock; related fixtures synchronize with real reading/shutdown completion and retain their assertions.

    The source revision passed its full gate and 300 focused early/late-recall and revised-direction repetitions. A live saved-preference workflow verified late memory injection using OpenRouter deepseek/deepseek-v4.1-flash throughout; it did not reproduce the rare live re-ask ordering. The combined build and change entry passed. Combined full-package checks, exact-commit CI, and final combined live acceptance remain pending, so the PR stays draft.

  2. added
    bugSomething the code does that it should not
    area:sessionThe engine — turns, tasks, the toolbelt, checkpoints
    on Sep 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:sessionThe engine — turns, tasks, the toolbelt, checkpointsbugSomething the code does that it should notsev:papercutA wording, a hint, a small wrongness that costs a moment

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions