Skip to content

Port fs-cortex laws tier + reflexes onto v4.9.x (credit: @NestorPVsf, fs-cortex/Fernando Montero MIT) #33

Description

@Luispitik

Reimplementación de dos aportaciones de @NestorPVsf que quedaron bloqueadas por deriva de base, no por calidad.

Origen y crédito

El diseño original es de @NestorPVsf en los PRs #9 (laws tier) y #12 (reflexes), portado a su vez desde fs-cortex, de Fernando Montero, bajo licencia MIT. Ambos créditos se conservan en el código, en CHANGELOG.md y en docs/FEATURES.md. Las ramas cortex-fusion-laws y cortex-fusion-reflexes quedan como referencia de implementación y no se borran.

Por qué se cerraron los PRs originales

Se abrieron contra v4.6.x. main va ya por v4.9.0 y v4.8.0 extrajo Plexus (breaking), así que ambos quedaron en CONFLICTING sobre CHANGELOG.md, docs/FEATURES.md, install.sh e install.bat.

Medido con git merge-tree, los conflictos son uniones mecánicas: cada lado añade su chmod/copy y su bloque Step 5c, y se resuelven conservando ambos. Lo que no aparece como conflicto es el coste real:

  • tests/test-installer-hardening.sh (llegado con v4.8.1, posterior al PR) fija en 7 el número de hooks en cuatro asserts — T1, T8, T19, T21 — contando hooks reales vía count_sinapsis_hooks. El tier de laws añade un SessionStart que lo lleva a 8 y rompe los cuatro sin un solo marcador de conflicto.
  • En core/settings.template.json, "_hooks_total": 7 se auto-fusiona sin conflicto porque ambas ramas cambiaron 6→7 de forma independiente. Son sietes distintos: el de main incluye PreCompact y excluye SessionStart, el del PR al revés. El fichero resultante tendría 8 hooks declarando 7.

Mantener los PRs abiertos esperando un rebase que la base vuelve a invalidar no le hace justicia al trabajo. Se cierran y se rehacen aquí.

Alcance

De #9 — laws tier (~382 LOC que se portan limpias):

  • core/_laws-injector.sh (~93 LOC) + hook SessionStart
  • seeds/laws/ — 5 leyes semilla + README
  • tests/test-laws.sh (~184 LOC)
  • commands/promote.md — promoción de instinct a law

De #12 — reflexes (~387 LOC limpias):

  • core/_reflex-merge.mjs (~100 LOC), merge idempotente
  • seeds/reflexes.json — 5 reglas pasivas
  • tests/test-reflexes.sh (~235 LOC)

Ajustes obligatorios sobre v4.9.0

  • core/settings.template.json: _hooks_total a 8, con SessionStart y PreCompact en el breakdown. El campo no tiene consumidores en código (es documentación), pero un valor que miente es peor que ninguno.
  • tests/test-installer-hardening.sh: actualizar los 4 asserts de 7 a 8 hooks. Verificado hoy sobre v4.9.0 en un HOME limpio: el instalador registra 7 (PreToolUse 4, PostToolUse 1, Stop 1, PreCompact 1).
  • install.sh / install.bat: conservar el chmod/copy de _precompact-guard.sh y la nota de hands-off de Plexus (v4.8.0) al añadir los bloques Step 5c. Actualizar los contadores de los mensajes finales ("6 hook scripts…").
  • .github/workflows/tests.yml: registrar test-laws.sh y test-reflexes.sh.
  • Cuidado con dos trampas del bloque node -e de _session-learner.sh si el port lo toca: no admite comilla simple literal (cierra el string de bash — ver comentario en el propio fichero), y su stderr va al log desde v4.9.0.

Nota

@NestorPVsf: si retomas esto, dilo por aquí y te lo reasigno — el port es tuyo y prefiero que lo firmes tú. Cerrar los PRs no es un rechazo del trabajo, es que la base se movió dos versiones menores mientras esperaban y prefiero no pedirte un tercer rebase sobre algo que seguirá moviéndose.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions