Skip to content

v0.4.24 — La máquina de estados vive en la config del vault

Choose a tag to compare

@Jabar42 Jabar42 released this 16 Oct 13:13
· 39 commits to master since this release

Estado de los conceptos declarado en el vault (PR #31, Medardo Rafael Hernandez Franco).

Added

  • Máquina de estados por tipo, declarada en la config (types.states.schemas, agrupada por capa): types, states, initial, transitions, replaced (el estado que exige un corrige entrante) y pending (lo que stale cuenta como sin resolver). states: [] = capa de registro, no lleva status. types.states.strict (default false) decide aviso o error.
  • new sin --status arranca en el estado inicial del tipo; con --status, el valor tiene que estar en el esquema. Un tipo de registro no admite ninguno.
  • edit --status valida el estado y la transición desde el actual; --force salta la transición (migraciones).
  • graph.inherit_default_pairs: false deja fuera los valid_pairs embebidos —usan el vocabulario de un vault (LeccionAprendida, no Lesson)— para que cada vault declare los suyos con sus propios nombres de tipo, conservando descripción, transitividad e inversa.
  • graph.strict_pairs: true: un par (tipo origen, tipo destino) fuera de los declarados pasa de aviso a error en validate, y new/edit no escriben la arista.
  • okf stamp [--staged]: fija timestamp desde el diff de contenido contra HEAD; con --staged vuelve a stagear lo que ajustó, para el pre-commit.

Changed

  • timestamp mide el contenido, no los metadatos: edit lo renueva solo si cambian body, title o description. Aplica también sin esquema — es un cambio global, no una rama opt-in.
  • stale señal 3 lee pending del esquema del tipo; sin esquema, el literal histórico propuesta. Señal 6 exige status a cualquier tipo con estados declarados; sin esquema, a Decision.
  • La regla de corrige mira el estado replaced de la capa del destino; sin esquema conserva la heurística histórica (deprec/superced).
  • La validación 12 de validate (status contra el esquema) se suma a las existentes; sin esquema no comprueba nada.

Medido (2026-10-16)

  • Suite: 396 → 439 (43 nuevos). Revirtiendo cli/ a master, los nuevos dan 24 fallos + 3 errores: no son vacíos.
  • validate --all y stale --json sobre OKF-Vault (699 archivos, sin types.states): salida idéntica a v0.4.23.
  • El check Timestamp↔git de health no se rompe: solo alerta si el timestamp va en el futuro respecto al último commit o más de 30 días antes del primero.

Known follow-up

  • dashboard_snapshot._collect_stale_results llama a collect_stale(...) sin el nuevo config=: inerte sin esquema, pero con uno activo el panel DashboardView divergiría de stale y board. Repro en el comentario de revisión del PR #32.

Esta etiqueta es la que tienen que instalar los tres entornos (Action del vault, venv del Mac, Skynet) antes de activar el esquema de estados: es el paso que el plan de fases deja como condición del merge del PR #8 del vault.