Repository navigation
v0.4.24 — La máquina de estados vive en la config del vault
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 uncorrigeentrante) ypending(lo questalecuenta como sin resolver).states: []= capa de registro, no llevastatus.types.states.strict(defaultfalse) decide aviso o error. newsin--statusarranca en el estado inicial del tipo; con--status, el valor tiene que estar en el esquema. Un tipo de registro no admite ninguno.edit --statusvalida el estado y la transición desde el actual;--forcesalta la transición (migraciones).graph.inherit_default_pairs: falsedeja fuera losvalid_pairsembebidos —usan el vocabulario de un vault (LeccionAprendida, noLesson)— 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 envalidate, ynew/editno escriben la arista.okf stamp [--staged]: fijatimestampdesde el diff de contenido contraHEAD; con--stagedvuelve a stagear lo que ajustó, para el pre-commit.
Changed
timestampmide el contenido, no los metadatos:editlo renueva solo si cambianbody,titleodescription. Aplica también sin esquema — es un cambio global, no una rama opt-in.staleseñal 3 leependingdel esquema del tipo; sin esquema, el literal históricopropuesta. Señal 6 exige status a cualquier tipo con estados declarados; sin esquema, aDecision.- La regla de
corrigemira el estadoreplacedde 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/amaster, los nuevos dan 24 fallos + 3 errores: no son vacíos. validate --allystale --jsonsobreOKF-Vault(699 archivos, sintypes.states): salida idéntica a v0.4.23.- El check
Timestamp↔gitdehealthno 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_resultsllama acollect_stale(...)sin el nuevoconfig=: inerte sin esquema, pero con uno activo el panel DashboardView divergiría destaleyboard. 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.