fix: comprehension-first guard + reuse rung (#245, #217) (#253)

#245 "Dangerously lazy": add an operational "fix the root cause, not the
symptom" directive — grep every caller of the function you touch and fix the
shared function once (the smaller diff). Validated on the agentic benchmark: on
a shared-helper bug-fix trap, baseline fixes the root cause 1/6 while ponytail
does 6/6 on both Sonnet 4.6 (the model the issue was filed on) and Opus 4.8,
verified by reading the produced code. Plain prose ("trace the flow") did not
move it; the actionable, lazy-framed directive did.

#217 "Missing rung": add ladder rung 2 "Already in this codebase? Reuse it,
don't re-write it." Propagated across SKILL.md, AGENTS.md, all agent mirror
copies, the hook fallback, and both READMEs (check-rule-copies passes).

Benchmark: 4 new deterministic quality-tier tasks (reuse-slug, reuse-money,
trace-transfer, trace-amount) with selftest-proven good/bad refs; harness gains
multi-file seed support in --selftest, distinctive-behaviour reuse detection,
and counts in-file __main__/demo() self-checks as test LOC (not source bloat)
for surgical tasks. Full writeup in
benchmarks/results/2026-06-22-issue-245-217-comprehension.md.

Also carries the in-progress todo-null benchmark task already present in the
working tree.

Co-authored-by: Dietrich Gebert <dgebert@Dietrichs-MacBook-Pro.local>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
DietrichGebert
2026-06-22 23:30:05 +02:00
committed by GitHub
co-authored by Dietrich Gebert Claude Opus 4.8
parent 6da37bfa7d
commit dedc97ca7c
15 changed files with 698 additions and 81 deletions
+8 -5
View File
@@ -83,13 +83,16 @@ Antes de escribir código, el agente se detiene en el primer peldaño que aguant
```
1. ¿Necesita existir esto? → no: omitirlo (YAGNI)
2. ¿Lo hace la stdlib? → úsala
3. ¿Es una feature nativa? → úsala
4. ¿Una dependencia ya instalada? → úsala
5. ¿Cabe en una línea? → una línea
6. Solo entonces: el mínimo que funciona
2. ¿Ya existe en este código?reúsalo, no lo reescribas
3. ¿Lo hace la stdlib? → úsala
4. ¿Es una feature nativa? → úsala
5. ¿Una dependencia ya instalada? → úsala
6. ¿Cabe en una línea? → una línea
7. Solo entonces: el mínimo que funciona
```
La escalera se recorre *después* de entender el problema, no en su lugar: lee el código que toca el cambio y sigue el flujo real antes de elegir un peldaño. Flojo en la solución, nunca en la lectura.
Flojo, no negligente: la validación en límites de confianza, el manejo de pérdida de datos, la seguridad y la accesibilidad nunca están en riesgo.
## Instalación