Skip to content

Fala do turno em curso duplica no history depois do loadOlder #140

Closed

Description

@JoaoLuisQuirino

Contexto

Relato do MP (Infusion, alpha), sdk-core 0.3.4, tarefa ecdf5e92-accb-4bc6-8314-558f1e61dfa2: a fala dfa3f96e... (20:37:49 UTC de 27/10) abriu um turno longo e, por volta das 20:48, apareceu de novo no fim do history, no meio do trabalho. No servidor ela existe uma vez só.

No banco do copilot alpha a tarefa tinha 121 linhas depois da fala até 20:48, então a página mais nova de 100 não a contém.

Causa

Toda conexão com a box traz de novo o stepStart do turno que roda (o sendState do sidecar, com a sequência original e o clientMessageId da fala). Uma sessão que carrega o history enquanto esse turno roda (F5, outra aba, ou o app reabrindo a sessão depois de o canal cair de vez) recebe uma página que começa depois da fala. O liveQuestion não acha a fala pelo clientMessageId e cria live:user:<id> no fim. Quando o loadOlder traz a linha original, a fala fica duas vezes.

O caminho do reconcilePersistedTurn sozinho não duplica: com o turno em curso na sessão, o stepStart repetido cai em repeatsTheRunningTurn antes do liveQuestion. O que duplica é a sessão que carrega o history com o turno já rodando. O bug existe na 0.3.5.

Correção

O liveQuestion não cria a fala cuja sequência fica antes da linha mais antiga que o history tem, quando o servidor ainda tem linhas mais antigas: ela é uma dessas linhas, e o loadOlder a traz no lugar dela. Fala desta sessão e box cujo log recomeçou (hello com log menor que o fim do history) seguem como antes.

Prova

Teste: sessão aberta por taskId com página que começa depois da fala, stepStart repetido do turno, depois loadOlder. Espera a fala uma vez, no lugar dela; sem a correção, ela aparece no fim e depois duas vezes. Prova na dev por tarball contra a box viva.

Activity

  1. JoaoLuisQuirino commented on Oct 27, 2026

    @JoaoLuisQuirino
    ContributorAuthor

    Corrigido no #141 (squash a17cbc6), publicado na sdk-core 0.3.6, que é a latest no npm. A platform-sdk 1.8.5 e a functions-sdk 0.3.6 já dependem dela.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions