chat/rollback with null contentId truncates history at the first idless message
Los mantenedores suelen responder en 2 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 52/100
Línea de trabajo
Start with rollback-chat in src/eca/features/chat.clj and trace how it handles the supplied contentId; the report identifies null matching the first idless message. Check the compaction marker and summary creation in src/eca/shared.clj, then reproduce with the synthetic history fixture and JSON-RPC request described here. Done means a missing, null, or unknown target is rejected before history or files change, with regression coverage for the reported rollback cases.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Describe the bug
Measured with ECA 0.167.0 over JSON-RPC: chat/rollback accepts contentId: null and discards history starting at the first message without a content ID. A seven-message fixture with ordinary idless assistant text retained only the first user message, including after server restart.
With include: ["messages", "tools"] and rollback records present, the same request also reverted file changes after that point. This was measured with synthetic records, not live edit-tool calls. Normal persistence strips those records, so this does not establish file reversal after a server restart; that risk concerns records still held in a live session.
To Reproduce
Use a disposable workspace and cache; this request destroys history.
- Prepare a chat containing an ID-bearing user message, an idless assistant answer, an idless compaction marker/summary, and subsequent turns. A synthetic stored-history fixture suffices; no model request is needed.
- Send:
{"jsonrpc":"2.0","id":1,"method":"chat/rollback","params":{"chatId":"<fixture-chat>","contentId":null,"include":["messages"]}} - Read
chat/history, restart the isolated server, and reopen the chat. - Only the first user message remains. The request returned
{}rather than an error.
Measured UI trigger on eca-emacs master b353d444dca3e1f54c6c724a20eda372ee5443d7: render the isolated server's history containing a seeded compaction summary, expand the summary, and activate its rollback action with RET. The client still offers rollback without a message ID. Its actual request params were:
{"chatId":"<fixture-chat>","contentId":null,"include":["messages"]}
Choosing messages and tool changes instead emitted "include":["messages","tools"], also with a null target. Forwarding each captured request unchanged to ECA 0.167.0 retained only the first user message, including after restart. This used batch Emacs and a source-shaped seeded summary, not live /compact or a GUI mouse click.
Expected behavior
Reject a missing, null, or unknown rollback target before changing history or files. Clients should not offer rollback on blocks without a valid target ID.
Doctor
eca --version: eca 0.167.0; macOS, headless stdio client. No provider or model was involved. /doctor was not collected.
Additional context
Source-inferred cause, still present at ECA master 065e77319960b96ee96f7d86d86d4d0cd95257a1:
rollback-chatusestake-while/drop-whilecomparing each message's:content-idto the supplied ID, without validating the target first. Null therefore matches the first idless message, not the selected summary.- Compaction appends a marker and user-role summary without IDs.
- eca-emacs user-text rendering offers rollback without a nil-ID guard.
Related: eca-emacs #136, “Rollback chat to before this message stays after compact.” That report concerns the available action; these results establish the destructive server behavior of a null target.
- Lenguaje dominante
- Clojure
- Estrellas
- 1k
- Forks
- 82
- Merge medio
- 2 d
- PR fusionados (30 d)
- 19
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de editor-code-assistant/eca
-
Models doesn't work when fetchModels: false is usedPosiblemente ocupada @zikajk la tomó hace 4 días. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
editor-code-assistant/eca#661 · 1 asignado ·
Los mantenedores suelen responder en 2 días
-
Anthropic API-key requests fail with "credit balance is too low"Posiblemente ocupada @stamdrovas la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
editor-code-assistant/eca#666 ·
Los mantenedores suelen responder en 2 días
-
docs page illustrationAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
editor-code-assistant/eca#664 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
Dificultad 3/5 1-2 días Aptitud para principiantes 56/100
editor-code-assistant/eca#662 · 1 reacción ·
Los mantenedores suelen responder en 2 días
-
bug
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
editor-code-assistant/eca#652 · 1 comentario ·
Los mantenedores suelen responder en 2 días
Todos los issues de editor-code-assistant/eca
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
-
needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
.Frontend .Team/UXWest Priority:P3 Querying/Filters Type:Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
metabase/metabase#85298 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
pgwire tokens-reqd
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
Los mantenedores suelen responder en 1 día
-
Evals take an extra 40ms each on Linux, since the server doesn't set TCP_NODELAYPosiblemente ocupada @bbatsov la tomó hace 3 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
Los mantenedores suelen responder en 3 días