Repository navigation
v0.4.22
[2026-10-15] — v0.4.22
Fixed
healthbuscaba el hook siempre en<vault>/.git/hooks/pre-commit(#30). Concore.hooksPath hooks—la activación que recomienda elCLAUDE.mddeskynet-vault— o dentro de un worktree (donde.gites un archivo), un vault sano daba 7/8 con «pre-commit hook does not exist» aunque el hook existiera y corriera: como ese hook termina enhealth --strict, el commit quedaba abortado y no había forma de commitear con la configuración recomendada. Repro medido en un clon nuevo del vault: 7/8 sin el fix, 8/8 con él._hooks_dir(vault)le pregunta a git congit rev-parse --git-path hooks;dashboard_snapshothereda el arreglo porque importa la misma función.tests/test_health_git_hook_hookspath.py(+5).trace --layers hooksseguía leyendo.git/hooksa mano (misma clase que el #30, cerrada en el mismo lote): en un vault concore.hooksPathrespondía «(no results)» en silencio aunque el hook existiera — demostrado en vivo sobreskynetantes y después. Ahora usa_hooks_dirdehealth: un solo lugar decide dónde vive el hook.tests/test_trace_hooks_dir.py(+4, RED 3/4 contra el código anterior).- La señal 4 de
stale(«no backlinks») resolvía los wikilinks por nombre de archivo e ignoraba las aristas tipadas (#29), así que contradecía agraph. Medido sobreskynet(239 conceptos, 2026-10-15): 51 conceptos marcados antes, 34 después — 17 falsos positivos corregidos (33 %), 12 por aristas tipadas y 5 por basenames repetidos ([[projects/x/x]]caía en cualquierx.mdy la ficha real quedaba huérfana).build_backlinks_indexusa ahorabuild_graph, la misma resolución quegraph. Costo:stalepasa de ~0.5 s a ~0.68 s en 239 conceptos, porque construye el grafo completo (aceptable a esta escala).tests/test_stale_backlinks.py(+3).
Changed
- El check del hook de
healthincluye en el mensaje la ruta donde buscó («looked in …»): un 7/8 se diagnostica sin leer el código (sugerencia del autor del #30).
Tests: 385.
Fuera de alcance (verificado, no incluido)
- La tupla de tipos «naturalmente huérfanos» de la señal 4 lista
Sesion, pero el vault usatype: Session(15 conceptos, 9 sin backlinks): esos siguen contando como «no backlinks». Es la diferencia entre los 60 que reporta el CLI y los 51 del conteo sin sesiones.tests/test_dashboard_snapshot_conceptos.py:73fija la premisa con el typo. Decisión de producto pendiente (¿una sesión sin backlinks es señal de staleness?), fuera de este release.