anthropics / anthropics/claude-code-action

A single malformed line in the inline-comment buffer crashes the entire post step, losing every valid buffered comment

Abierto
#1,796 0 comentarios 0 reacciones 0 asignados Ver en GitHub
bug duplicate p2
Lenguaje dominante
TypeScript
Estrellas
8.9k
Forks
2.1k
Métricas de merge de PR
Métricas de PR pendientes

Descripción

# A single malformed line in the inline-comment buffer crashes the entire post step, losing every valid buffered comment

**Type:** bug (error handling)
**Severity:** medium
**Area:** `src/entrypoints/post-buffered-inline-comments.ts`
**Effort:** trivial

## Summary

The post step parses the buffer file with an unguarded `JSON.parse` per line:

```ts
// src/entrypoints/post-buffered-inline-comments.ts (main)
const comments: BufferedComment[] = raw
.split("\n")
.filter(Boolean)
.map((line) => JSON.parse(line));
```

If any line fails to parse, `main()` rejects, the catch handler logs
`post-buffered-inline-comments failed` and exits 1 — and **every** buffered
comment is lost, including the ones that are perfectly valid.

This contradicts the buffer's own writer. `removeBufferedComment()`
(`src/mcp/inline-comment-buffer.ts`) deliberately **keeps** lines it cannot
parse:

```ts
} catch {
// Keep anything we cannot parse rather than silently dropping it.
return true;
}
```

So the codebase already acknowledges that malformed lines can legitimately be
present in the buffer, yet the only reader of the buffer crashes on them.

## Failure scenarios

**A. Truncated append.** The buffer at `/tmp/inline-comments-buffer.jsonl` is
appended by the MCP server process (`appendFileSync`). A runner that is
killed mid-write, or two server processes appending large comment bodies
concurrently, can leave a partial final line. The next post step then throws
on that line and posts nothing at all.

**B. Any other corrupting event** (disk issues, an external process writing
to /tmp) — same outcome: one bad line suppresses all valid review comments,
which is the worst possible failure mode for a replay step whose whole
purpose is not losing the model's comments.

## Suggested fix

Skip malformed lines with a `::warning::` annotation and post the remaining
valid entries (mirroring how this file already warns for
`confirmed=false` / classified-as-probe comments). Happy to open a PR.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.