feat(summary): diffstat scoreboard per fase en SUMMARY.md - #1
Conversation
- 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
|
Hola, @ixjosemi: Cuando aceptes la invitación, te añado como requested reviewer. Un abrazo |
|
@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 Un resumen de cada una, en una frase:
Están todas abiertas y mergeables por si te apetece revisarlas, pero vamos, sin compromiso. |
What
Adds a per-phase diffstat scoreboard to
SUMMARY.mdso 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: newdiffTotals(base, head, cwd)— parsesgit diff --numstat(<added>\t<deleted>\t<path>) into{ files, insertions, deletions }. Machine-readable and locale-independent (unlike--stat), handles binary files (-), and returnsundefinedwhen the range is empty (e.g. a read-only phase that made no commit).src/metadata.ts:PhaseMetadata.diff?: DiffTotals(optional — backward compatible withschemaVersion3) plusrecordPhaseDiff(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; returnsundefinedwhen no phase has diff data so the section can be omitted entirely.writeSummaryaccepts the optional rendered scoreboard.src/runner.ts:commitPhasenow returns the new HEAD;finalizePhaseRepositorycomputes the per-phase diff against the baseline;runPhaserecords it;runbuilds the scoreboard rows and passes the section intowriteSummary.Verification
bun run typecheck- passbun test- 778 pass, 0 failbun run build- passtest/git.test.ts,test/metadata.test.ts,test/runner.test.ts,test/workspace.test.tsextended for the new paths (empty diff, binary files, read-only phase, mixed commit/no-commit phases).Generated with a
convoyrun (implementer, patterns, security, tests, adversarial) on theimplement-cockpit-antigravitypipeline.