| migrate_issues_frontmatter |
pipeline |
py |
pipelines |
1.0.0 |
impure |
def migrate_issues_frontmatter(issues_dir: str, backup_dir: str = '', dry_run: bool = False) -> dict |
Migra dev/issues/*.md de metadata inline (**Key:** value) a frontmatter YAML canonico (issue 0100). Idempotente: archivos ya migrados (id + domain + scope presentes) se saltan. Archivos con frontmatter parcial reciben merge de claves faltantes. Infiere domain, scope, type y priority por heuristicas de nombre de archivo. |
| registry-quality |
| frontmatter |
| chore |
| dev-issues |
| migration |
| registry |
|
| extract_frontmatter_py_core |
|
|
|
false |
error_go_core |
| json |
| os |
| re |
| shutil |
| sys |
| datetime |
| pathlib |
| typing |
|
false |
| name |
desc |
| issues_dir |
Ruta al directorio de issues (ej. 'dev/issues'). Se escanean *.md directos y completed/*.md. |
|
| name |
desc |
| backup_dir |
Directorio donde copiar los originales antes de escribir. Default: <issues_dir>/.backup_pre_0100/. Pasar '' para usar el default. |
|
| name |
desc |
| dry_run |
Si True, calcula cambios pero no escribe archivos ni crea backups. |
|
|
dict con claves: migrated (N archivos migrados desde cero), merged (N archivos con frontmatter parcial completado), skipped (N ya completos), warnings (lista de strings), files (lista de resultados por archivo con action/domain_inferred/scope_inferred/warnings). |
python/functions/pipelines/migrate_issues_frontmatter.py |
Pipeline impuro: muta archivos .md en disco y crea backups.
Heuristicas de domain (primer match gana, multi-tag posible):
cpp-stack — filename contiene cpp-, imgui, glfw, glsl, altsnap
kanban — filename contiene kanban
trading — filename contiene trading
gamedev — filename contiene gamedev
osint — filename contiene osint, odr-
data-ingest — filename contiene metabase, bigquery, datafactory, navegator, cdp-
notify — filename contiene notify, telegram, matrix
imagegen — filename contiene imagegen, sd-cpp, stable-diffusion
registry-quality — filename contiene audit-, registry-first, uses_functions, nested-app-md
meta — filename contiene autonomous, e2e-validation, registry-call, delegation, capability, call-monitor, mcp-
deploy — filename contiene deploy, vps
dev-ux — filename contiene fn-run, gradle_run, dev-
browser — filename contiene browser, chrome, cdp-
apps-infra — filename contiene datahub, app-hub, launcher, app-locations
frontend — filename contiene frontend, react
default — lista vacia + warning
Heuristicas de scope:
roadmap -> cross-stack
extract-|migrate-|audit- -> registry-only
type=app o -app- en filename -> app-scoped
default -> multi-app
Heuristicas de type (si no viene del inline):
roadmap -> epic
audit-|cleanup- -> chore
fix-|bugfix- -> bugfix
default -> feature
Heuristicas de priority (si no viene del inline):
mtime < 14 dias -> alta
else -> media
Formatos inline reconocidos:
**Status:** value (y variantes: Estado, Tipo, Prioridad, Created, Depends, Blocks, Related)
| **Campo** | valor | (tabla markdown)
El backup se crea solo UNA vez por archivo (si ya existe el backup, no sobreescribe).
Segunda ejecucion = 0 cambios si los archivos ya tienen id + domain + scope.
|