fix(gitnexus): reindexar no puede borrar los embeddings, y se verifica al final - #247
Merged
Merged
Conversation
…a al final `npx gitnexus analyze` sin `--embeddings` no los deja como estaban: los BORRA. Hoy son 12.079 y regenerarlos es caro. El PostToolUse hook de Claude Code YA arma bien el comando —agrega el flag cuando detecta embeddings, `gitnexus-hook.cjs:284`— asi que no era ahi. El peligro esta en los docs del repo: AGENTS.md y CLAUDE.md muestran el comando pelado en dos lugares (linea 95 y el bloque "Keeping the Index Fresh"), y viven dentro de `<!-- gitnexus:start -->`, que el propio analyze reescribe. Corregir ese texto dura hasta el proximo reindex: no se arregla documentando. Lo que si sobrevive a la regeneracion es una via que no depende de recordar el flag y que VERIFICA el invariante despues de correr: - `analyze_command(n)` decide el flag por el conteo real del indice. - `verify_preserved(before, after)` compara contra el conteo PREVIO, no contra cero: un indice que paso de 12.079 a 3 esta roto igual, y `after > 0` lo taparia. Sale distinto de cero si bajaron. - `embedding_count()` trata un meta ausente o ilegible como 0 sin reventar: un indice que todavia no existe no es un error. Recordar un flag es una esperanza; verificar el conteo despues es un hecho. 9 tests, y 4 mutaciones —no agregar nunca el flag, agregarlo siempre, detectar solo la perdida total, dar por bueno cualquier resultado— mueren cada una por su test propio. Verificado contra el indice real: reporta 12.079 y arma el comando con el flag.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
El riesgo
npx gitnexus analyzesin--embeddingsno los deja como estaban: los borra. Hoy son 12.079 y regenerarlos es caro.Dónde NO estaba el problema
Mi primera lectura culpó al hook de Claude Code. Estaba equivocada —
gitnexus-hook.cjs:284ya arma el comando bien:Dónde sí está
En los docs del propio repo.
AGENTS.mdyCLAUDE.mdmuestran el comando pelado en dos lugares — línea 95 ("runnpx gitnexus analyzein terminal first") y el bloque Keeping the Index Fresh.Y ahí está lo que descarta el arreglo obvio: ese texto vive dentro de
<!-- gitnexus:start -->, que el propioanalyzereescribe. Corregirlo a mano dura hasta el próximo reindex. Esto no se arregla documentando.Lo que sí sobrevive a la regeneración
Una vía que no depende de recordar el flag, y que verifica el invariante después de correr:
analyze_command(n)verify_preserved(before, after)embedding_count()El detalle que importa en
verify_preserved: un índice que pasó de 12.079 a 3 está roto igual, y un chequeo ingenuo (after > 0) lo daría por bueno. Por eso la comparación es contra el conteo anterior.Recordar un flag es una esperanza; verificar el conteo después es un hecho.
Verificación
9 tests. Y 4 mutaciones, cada una desactivando una decisión:
--embeddingstest_con_embeddings_el_flag_no_es_opcionaltest_sin_embeddings_no_se_agrega_el_flagtest_detecta_la_perdida_PARCIALtest_detecta_la_perdida_totalContra el índice real: reporta 12.079 y arma el comando con el flag. Ruff limpio.