Volver a la wiki

Audit Docs Drift · script + workflow mensual

Resumen

audit_docs_drift.py es un script Python (~250 LOC) que detecta drift documental entre lo declarado en docs y la realidad del repositorio + workspace. Se introdujo en la sesión s61 (14-05-2026) como iniciativa periódica formalizada, tras detectar que el conteo de páginas wiki en CLAUDE.md §7 estaba desactualizado (227/450 declarado → 452 real).

El workflow audit-docs-drift.yml lo ejecuta automáticamente el primer domingo de cada mes a las 08:00 UTC y abre un issue GitHub si encuentra drift de severidad hard.


Motivación


Componentes

scripts/audit_docs_drift.py

6 checks implementados:

CheckSeveridadDescripción
wiki-countshardDetecta product: con valor desconocido (fuera de UI_PRODUCTS ni ORPHAN_PRODUCTS). Exit 1 si falla.
app-version-propagationhardVerifica que APP_VERSION de config/settings/base.py aparece en los 6 archivos clave (README, CLAUDE.md repo, pyproject.toml, CLAUDE.md workspace, Sidebar.tsx, DesktopA.tsx).
dead-doc-refssoftDetecta referencias Documentation/*.md que ya no existen en el repo.
obsolete-bannerssoft.md con OBSOLETO/DEPRECATED sin banner explícito al inicio del fichero.
ugly-bibask-slugssoftSlugs patrón concept--general--existe-*, concept--general--que-*, etc. — candidatos a revisión por el Curator.
huerfanassoftPáginas con product: supercontext o product: infra — accesibles solo por URL directa, sin navegación UI.

Modos de uso:

# Auditoría completa (markdown a stdout)
python scripts/audit_docs_drift.py

# Solo un check
python scripts/audit_docs_drift.py --check wiki-counts
python scripts/audit_docs_drift.py --check app-version-propagation

# Output JSON para parsing programático
python scripts/audit_docs_drift.py --json

Constantes editables:

UI_PRODUCTS     = {"crearack", "crearack-tech", "workspace", "workspace-tech", "ia-tech"}
ORPHAN_PRODUCTS = {"supercontext", "infra"}

APP_VERSION_PROPAGATION = [
    REPO_ROOT / "README.md",
    REPO_ROOT / "CLAUDE.md",
    REPO_ROOT / "pyproject.toml",
    WORKSPACE_ROOT / "CLAUDE.md",
    WORKSPACE_ROOT / "src/components/shell/Sidebar.tsx",
    WORKSPACE_ROOT / "src/components/variants/desktop/DesktopA.tsx",
]

Si se añade una nueva wiki → añadir su product: a UI_PRODUCTS. Si se añade nuevo archivo con la versión → añadir a APP_VERSION_PROPAGATION.


.github/workflows/audit-docs-drift.yml


Estado de la iniciativa s61 (14-05-2026)

ÍtemEstado
Script audit_docs_drift.py✅ Mergeado PR#29
Workflow cron mensual✅ Mergeado PR#29
CLAUDE.md §7 corregido (452 páginas reales)✅
ADR decision--20260514--saneamiento-docs-periodico✅ Creado en workspace
Sub-iniciativa 39 páginas huérfanas (supercontext 38 + infra 1)🔲 Pendiente — triaje caso a caso
Auditoría manual al cierre de iniciativas grandes🔲 Pendiente — checklist 6 puntos

Criterio de cierre: permanente-operativa cuando (a) cron lleva 3 meses sin falsos positivos; (b) 39 huérfanas triadas; (c) script ejecutado en cierres de sesión que toquen docs.


Primer run local (14-05-2026)

0 hard failures, 4 soft info findings:
- dead-doc-refs:       12  (mayoría CHANGELOG histórico, aceptables)
- obsolete-banners:     2
- ugly-bibask-slugs:  ~80  candidatos Curator
- huerfanas:           39  (38 product:supercontext + 1 product:infra)

Cómo añadir un check nuevo

  1. Definir función check_<nombre>() -> dict que devuelva {status, severity, ...}.
  2. Añadirla al diccionario CHECKS al final del módulo.
  3. Si es hard: devolver status: "fail" cuando detecta problema.
  4. Actualizar este doc + TASK.md.

Véase también

Subir