Skip to content

feat(summary): diffstat scoreboard per fase en SUMMARY.md - #1

Merged
ixjosemi merged 1 commit into
mainfrom
feat/feat-summary-diffstat-scoreboard
Aug 10, 2026
Merged

ixjosemi merged 1 commit into
mainfrom
feat/feat-summary-diffstat-scoreboard

Conversation

@dagoaie

@dagoaie dagoaie commented Jul 31, 2026

Copy link
Copy Markdown
Owner

What

Adds a per-phase diffstat scoreboard to SUMMARY.md so each run's summary shows how many files / insertions / deletions each pipeline phase contributed, plus a net delta row.

Why

Today the run summary lists phases and their reports, but nothing quantifies what each phase actually changed. Reviewers and the run dashboard cannot tell at a glance whether a phase was read-only, touched a few lines, or moved the whole feature. The scoreboard makes every phase's footprint visible in the same file that already summarizes the run.

How

  • src/git.ts: new diffTotals(base, head, cwd) — parses git diff --numstat (<added>\t<deleted>\t<path>) into { files, insertions, deletions }. Machine-readable and locale-independent (unlike --stat), handles binary files (-), and returns undefined when the range is empty (e.g. a read-only phase that made no commit).
  • src/metadata.ts: PhaseMetadata.diff?: DiffTotals (optional — backward compatible with schemaVersion 3) plus recordPhaseDiff(name, diff) / phaseDiff(name) on the metadata store.
  • src/workspace.ts: renderScoreboard(rows) renders a Markdown table (Phase | Files | + | - | delta net) with a Total row; returns undefined when no phase has diff data so the section can be omitted entirely. writeSummary accepts the optional rendered scoreboard.
  • src/runner.ts: commitPhase now returns the new HEAD; finalizePhaseRepository computes the per-phase diff against the baseline; runPhase records it; run builds the scoreboard rows and passes the section into writeSummary.

Verification

  • bun run typecheck - pass
  • bun test - 778 pass, 0 fail
  • bun run build - pass
  • Coverage: test/git.test.ts, test/metadata.test.ts, test/runner.test.ts, test/workspace.test.ts extended for the new paths (empty diff, binary files, read-only phase, mixed commit/no-commit phases).

Generated with a convoy run (implementer, patterns, security, tests, adversarial) on the implement-cockpit-antigravity pipeline.

- Automated tests and verification
- Pattern Audit Report — feat(summary): diffstat scoreboard per fase en SU
- Implementer Report — feat(summary): diffstat scoreboard per fase en SUMM
@dagoaie dagoaie self-assigned this Jul 31, 2026
@dagoaie

dagoaie commented Jul 31, 2026 •

Copy link
Copy Markdown
Owner Author

Hola, @ixjosemi:
te he invitado como colaborador (write) de dagocareer/convoy para poder añadirte como revisor oficial de este PR.

Cuando aceptes la invitación, te añado como requested reviewer.
Mientras tanto, tu revisión es bienvenida cuando quieras.

Un abrazo

@dagoaie

dagoaie commented Jul 31, 2026

Copy link
Copy Markdown
Owner Author

@ixjosemi te comparto esto por si te apetece echarle un vistazo, sin ningún compromiso — solo era para compartirlo 😄

Es un fork de Convoy en mi GitHub (dagocareer/convoy). Me pareció una herramienta muy útil para el día a día y le he añadido cuatro features que me faltaban. Lo curioso es que toda la implementación se ha hecho usando el propio Convoy (dogfooding): cada feature se escribió con su pipeline implement, con su PRD, sus auditorías y su revisión adversarial — Convoy revisándose a sí mismo. Y además, cada PR se fue apilando encima de la anterior.

Un resumen de cada una, en una frase:

  • PR feat(summary): diffstat scoreboard per fase en SUMMARY.md #1 — diffstat scoreboard: añade un marcador por fase en SUMMARY.md que muestra cuántas líneas/archivos toca cada paso del pipeline, para ver de un vistazo cuánto trabajo real hace cada fase.
  • PR feat(review): over-engineering auditor #2 — over-engineering auditor: Convoy ahora revisa también sobre-ingeniería en cada PR — abstracciones prematuras, flags que nadie usa, capas innecesarias — etiquetadas y con niveles, igual que ya revisaba código limpio, seguridad y bugs.
  • PR feat(review): debt-auditor #3 — debt-auditor: cuando una revisión difiere un hallazgo sin resolver, ya no se pierde: entra en un ledger de deuda técnica con un disparador para reabrirla; y si no hay forma honesta de justificar el aplazamiento, queda marcada como deuda «sin disparador».
  • PR feat(review): hunter-over-engineering — 7º track repo-wide de sobre-ingeniería #4 — hunter-over-engineering: Convoy revisa el repositorio entero — no solo lo que cambia en cada PR — buscando código inflado que podría recortarse, ordenado por cuánto se puede ahorrar en líneas y dependencias.

Están todas abiertas y mergeables por si te apetece revisarlas, pero vamos, sin compromiso.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants