feat: la revisión va en las líneas del diff, y el diff tiene todos los archivos #12

Merged
julio.caicedo merged 1 commit from feat/revision-en-las-lineas into main 2026-10-23 14:04:50 +00:00

Hasta ahora el bot dejaba todo en un comentario general, y el diff solo traía *.go, *.sql y *.yaml.

Revisión en las líneas

  • El revisor acepta -review <archivo> y escribe un JSON: cada hallazgo con cita verificada cuya línea está en el diff va como comentario en esa línea (new_position, línea de la versión nueva). El resto queda en el cuerpo, y los que van en línea solo se nombran ahí.
  • diffLines lee los hunks: cuenta las líneas + y las de contexto, ignora las -, \ No newline y los archivos borrados. Una línea fuera del diff no se manda: Forgejo rechazaría la revisión entera.
  • Los descartados por la verificación nunca van a una línea: en el código se leerían como algo a arreglar.
  • El prompt ahora dice qué es linea: la línea de la versión nueva, contada desde el +c del hunk.
  • La plantilla publica una revisión COMMENT (no aprueba ni pide cambios: no cuenta para las 2 aprobaciones). Si Forgejo la rechaza, publica el borrador como comentario común.

Todos los archivos: el diff ya no filtra por extensión. Un Makefile o un .golangci.yml también pueden incumplir la tarea.

Pruebas

  • TestDiffLines, TestBuildReviewPutsFindingsOnTheirLines, TestHunkStartRejectsGarbage.
  • El paso Post review contra un Forgejo falso: revisión aceptada → 1 comentario en línea; revisión rechazada (422) → cae al comentario común; sin JSON → comentario común.

Pendiente de ver en Forgejo de verdad: que acepte la revisión con github.token.

🤖 Generated with Claude Code

Hasta ahora el bot dejaba todo en un comentario general, y el diff solo traía `*.go`, `*.sql` y `*.yaml`. **Revisión en las líneas** - El revisor acepta `-review <archivo>` y escribe un JSON: cada hallazgo **con cita verificada** cuya línea está en el diff va como comentario en esa línea (`new_position`, línea de la versión nueva). El resto queda en el cuerpo, y los que van en línea solo se nombran ahí. - `diffLines` lee los hunks: cuenta las líneas `+` y las de contexto, ignora las `-`, `\ No newline` y los archivos borrados. Una línea fuera del diff no se manda: Forgejo rechazaría la revisión entera. - Los descartados por la verificación nunca van a una línea: en el código se leerían como algo a arreglar. - El prompt ahora dice qué es `linea`: la línea de la versión nueva, contada desde el `+c` del hunk. - La plantilla publica una revisión `COMMENT` (no aprueba ni pide cambios: no cuenta para las 2 aprobaciones). Si Forgejo la rechaza, publica el borrador como comentario común. **Todos los archivos:** el diff ya no filtra por extensión. Un `Makefile` o un `.golangci.yml` también pueden incumplir la tarea. **Pruebas** - `TestDiffLines`, `TestBuildReviewPutsFindingsOnTheirLines`, `TestHunkStartRejectsGarbage`. - El paso **Post review** contra un Forgejo falso: revisión aceptada → 1 comentario en línea; revisión rechazada (422) → cae al comentario común; sin JSON → comentario común. Pendiente de ver en Forgejo de verdad: que acepte la revisión con `github.token`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat: la revisión va en las líneas del diff, y el diff tiene todos los archivos
All checks were successful
Go / Test (pull_request) Successful in 34s
60db46de1e
El revisor escribe con -review un JSON con cada hallazgo verificado en su
línea, si esa línea está en el diff, y el resto en el cuerpo. La plantilla
lo publica como revisión COMMENT; si Forgejo la rechaza, va el borrador
como comentario común. El diff deja de filtrar por extensión.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
julio.caicedo deleted branch feat/revision-en-las-lineas 2026-10-23 14:04:50 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
startcodex/ci!12
No description provided.