Skip to content

fix(aviso-contexto): hardening sobre #303 — la PROCEDENCIA no miente en override inválido - #311

Merged
unjordi merged 1 commit into
developfrom
fix/aviso-contexto-hardening
Aug 8, 2026
Merged

fix(aviso-contexto): hardening sobre #303 — la PROCEDENCIA no miente en override inválido#311
unjordi merged 1 commit into
developfrom
fix/aviso-contexto-hardening

Conversation

@unjordi

@unjordi unjordi commented Aug 8, 2026

Copy link
Copy Markdown
Owner

Endurece el hook CONSTRUYENDO sobre #303 (ya en develop). Dos cosas:

  1. Verificación de que fix(#74): aviso-contexto reconcilia con /context + histéresis (no era sobre-conteo) #303 mató los 2 bugs, con tests que DISCRIMINAN (fallan contra el blob pre-fix(#74): aviso-contexto reconcilia con /context + histéresis (no era sobre-conteo) #303 5224aaa^, pasan contra el actual): denominador/confabulación (lidera con % de ventana + anti-confabulación) e histéresis (aleteo dentro del margen NO re-emite; un compact real SÍ re-arma).
  2. Bug latente ARREGLADO: la PROCEDENCIA decidía "override DELIBERADO" mirando solo si la env estaba no-vacía → un override INVÁLIDO (typo 70%, 150, con espacios) caía a PCT=92 pero el mensaje lo vendía como "=92 (override DELIBERADO de Jordi, NO un bug — créele)": la feature de confianza MINTIENDO sobre un valor que el usuario nunca fijó. Fix: flag PCT_SRC distingue override válido del default; solo cita "DELIBERADO" si fue válido, si no dice "(default)".

Reportado sin tocar (no-reachable): freew negativo solo con ctx≥1M (el CLI auto-compactaría antes). Confirmado robusto: div-por-cero en CEILING/WINDOW, fail-safe de jq, default 92.

690 PASS · 0 FAIL (+8). Solo mensaje/PROCEDENCIA + tests; no toca la medición.

Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com

…ts anti-regresión

Construye sobre #303 (reconciliación con /context + histéresis). Dos entregas:

1. Bug latente hallado y arreglado: la auto-justificación de la PROCEDENCIA del
   techo decía "override DELIBERADO" con solo mirar si CLAUDE_AUTOCOMPACT_PCT_OVERRIDE
   estaba NO-vacía. Un override INVÁLIDO (typo `70%`, out-of-range `150`, espacios)
   caía a PCT=92 pero el mensaje lo vendía como "=92 (override DELIBERADO de Jordi,
   NO un bug — créele)" → la feature de confianza MINTIENDO sobre un valor que el
   usuario nunca fijó. Fix: flag PCT_SRC distingue el override VÁLIDO del default; la
   PROCEDENCIA solo cita "DELIBERADO" cuando el override fue válido, si no dice (default).

2. Tests anti-regresión de #303 que DISCRIMINAN (fallan contra pre-#303, pasan contra
   el actual; verificado forense contra `git show 5224aaa^`):
   - Bug1 (denominador/confabulación): repro del reporte de campo 673K/1M@70% (banda 3)
     y el escenario ~66% de ventana (banda 2) — el aviso LIDERA con el % de la VENTANA
     (verificable con /context) + anti-confabulación, no solo el % del auto-compact.
   - Bug2 (histéresis anti-spam): aleteo de tokens en el borde de banda (655K↔680K con
     techo 700K, margen 14K) NO re-emite; solo un compact real (<651K) re-arma.
   - Procedencia honesta: override inválido→(default), válido→DELIBERADO.

Robustez verificada (sin cambio): fail-safe ante stdin no-JSON/vacío y líneas de
transcript malformadas (fromjson? las salta); PCT nunca queda unbound bajo set -u.

690 PASS · 0 FAIL.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@unjordi
unjordi force-pushed the fix/aviso-contexto-hardening branch from 60f8e8c to c0cd986 Compare August 8, 2026 21:28
@unjordi
unjordi merged commit eabb68e into develop Aug 8, 2026
2 checks passed
@unjordi
unjordi deleted the fix/aviso-contexto-hardening branch August 8, 2026 21:29
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.

1 participant