Skip to content

fix(laws): v4.2.1 — AD (Codex GPT-5.5) follow-up#85

Merged
fermonterom merged 1 commit into
mainfrom
fix/laws-v4.2.1
Jul 5, 2026
Merged

fix(laws): v4.2.1 — AD (Codex GPT-5.5) follow-up#85
fermonterom merged 1 commit into
mainfrom
fix/laws-v4.2.1

Conversation

@fermonterom

Copy link
Copy Markdown
Owner

Origen

Tras mergear v4.2.0, AD read-only con Codex GPT-5.5 sobre v4.1/v4.2 para cazar lo que los enjambres Sonnet + el contra-análisis previo pasaron por alto. Los 4 hallazgos evaluados como reales (no paja) y corregidos con enjambre supervisado.

Fixed

  • [P1] Crash de SessionStart con laws-meta.json malformado: load_laws() solo capturaba FileNotFoundError/JSONDecodeError/OSError; un laws no-dict o un valor no-dict lanzaba AttributeError no capturado → moría toda la inyección (leyes, EOD, avisos). Ahora tolerante a cualquier forma malformada (degrada a principle, except Exception de respaldo). Un hook de SessionStart no puede petar jamás.
  • [P1] impact.archive violaba el contrato "never deleted": el keep=5 por conteo de v4.1.0 podía borrar chunks <90d. DESIGN-V4 §7 decide "techo de retención 90 días". Cambiado a poda por edad de 90 días (IMPACT_ARCHIVE_KEEP_DAYS, _pruneDirByAge); comentarios "never deleted" reconciliados.

Docs/tests

  • test_session_start.sh: robustez de laws-meta (malformado → no crash) + split por tier + retrocompat (4→9 tests).
  • FEATURES.md al día: filas v4.1.0/v4.2.0/v4.2.1, fecha, wording de impact.archive.

Confirmado correcto por el AD (no tocado)

Injector filtra solo .txt; guard no crashea sin laws/; ley sin meta → principle; manual_swap_promote busca instincts de proyecto.

Verificación

Suite completa 39/39 verde. Desplegado v4.2.0→v4.2.1 y verificado en vivo (meta malformado → exit 0).

🤖 Generated with Claude Code

Read-only adversarial review with Codex GPT-5.5 caught 4 real issues the Sonnet
swarms and the earlier adversarial pass missed. All evaluated as real, not fluff.

Fixed:
- [P1] load_laws() crashed all of SessionStart on a malformed laws-meta.json
  (uncaught AttributeError on a non-dict schema). Now tolerant at every level;
  a SessionStart hook must never crash. Regression tests added.
- [P1] impact.archive retention: v4.1.0 count-based keep=5 could delete chunks
  <90d, contradicting the "never deleted" contract; DESIGN-V4 §7 mandates 90-day.
  Switched to 90-day age-based pruning; reconciled the stale comments.

Docs/tests:
- test_session_start.sh: laws-meta robustness (malformed -> no crash) + tier split.
- FEATURES.md caught up (v4.1/v4.2/v4.2.1 version-history rows, date, archive wording).

Codex confirmed correct (untouched): injector .txt filter, guard w/o laws/,
principle default, manual_swap_promote project-instinct search.

Full suite green (39/39). Deployed v4.2.0 -> v4.2.1 and verified live.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@fermonterom
fermonterom merged commit 86a937d into main Jul 5, 2026
@fermonterom
fermonterom deleted the fix/laws-v4.2.1 branch July 5, 2026 04:37
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