Orquesta Agentes IA que desarrollan por ti
Verificando...
24-feature-flags-cleanup
Procedimiento: Feature Flags Cleanup
Despliegue
1 plugin(s)
Editor
Preview
Tareas
1
Info
Titulo
Limpia feature flags obsoletos. Identifica flags no utilizados, coordina su eliminaci├│n del c├│digo, y actualiza configuraciones.
Descripcion
Contenido Markdown
8293 caracteres
Guardar
# Procedimiento: Feature Flags Cleanup ## Metadata - **ID**: PROC-24 - **Frecuencia**: Mensual - **Duraci├│n estimada**: 20-30 min - **Requiere**: Acceso al c├│digo fuente - **Dependencias**: Ninguna - **Bloquea**: Ninguno - **Agentes**: dotnet-architect --- ## Objetivo Limpiar feature flags obsoletos: 1. Detectar flags que ya no se usan 2. Identificar flags que siempre est├ín activos (ya deber├¡an ser permanentes) 3. Encontrar flags antiguos sin fecha de expiraci├│n 4. Generar lista de flags para eliminar --- ## Patrones de Feature Flags ### Patrones Comunes en C├│digo ```csharp // .NET - IFeatureManager if (await _featureManager.IsEnabledAsync("FeatureName")) // Configuraci├│n "FeatureManagement": { "FeatureName": true } // Custom flags if (Configuration["Features:NewCheckout"] == "true") if (Environment.GetEnvironmentVariable("FEATURE_X") == "1") ``` ```typescript // Node.js if (process.env.FEATURE_NEW_CHECKOUT === 'true') if (config.features.newCheckout) ``` --- ## Checklist Ejecutable ### 1. Identificar Sistema de Feature Flags ```bash # .NET - Microsoft.FeatureManagement grep -r "Microsoft.FeatureManagement" *.csproj grep -r "IFeatureManager\|IsEnabledAsync" src --include="*.cs" # .NET - Custom grep -r "Features:" appsettings*.json grep -r "FEATURE_" src --include="*.cs" # Node.js grep -r "FEATURE_\|feature" .env* package.json ``` - [ ] Sistema identificado: ___ - [ ] Ubicaci├│n de configuraci├│n: ___ ### 2. Listar Todos los Feature Flags #### En Configuraci├│n ```bash # appsettings.json (.NET) cat appsettings.json | jq '.FeatureManagement // .Features // empty' # .env files grep -E "^FEATURE_" .env .env.* 2>/dev/null # Variables de entorno en CI/CD grep -r "FEATURE_" .gitlab-ci.yml azure-pipelines.yml 2>/dev/null ``` #### En C├│digo ```bash # .NET - Extraer nombres de features grep -ohE 'IsEnabledAsync\("([^"]+)"\)' src --include="*.cs" | \ sed 's/IsEnabledAsync("\|")//g' | sort -u # Custom patterns grep -ohE 'Features:([^"]+)' src --include="*.cs" | sort -u grep -ohE 'FEATURE_[A-Z_]+' src --include="*.cs" --include="*.ts" | sort -u ``` - [ ] Total de flags encontrados: ___ - [ ] En configuraci├│n: ___ - [ ] En c├│digo: ___ ### 3. Detectar Flags No Usados en C├│digo ```bash # Para cada flag en configuraci├│n, verificar si se usa for flag in $(cat flags_config.txt); do count=$(grep -r "$flag" src --include="*.cs" --include="*.ts" | wc -l) if [ "$count" -eq 0 ]; then echo "NO USADO: $flag" fi done ``` - [ ] Flags no usados identificados - [ ] Candidatos a eliminaci├│n ### 4. Detectar Flags Siempre Activos ```bash # Flags que est├ín en true en TODOS los entornos # (ya deber├¡an ser c├│digo permanente) # Comparar entre entornos diff <(cat appsettings.json | jq '.FeatureManagement') \ <(cat appsettings.Production.json | jq '.FeatureManagement') # Si un flag es true en todos los entornos por >3 meses, es candidato a permanente ``` **Verificar en git history:** ```bash # Cu├índo se activ├│ el flag en producci├│n git log -p --all -S 'FeatureName.*true' -- "appsettings.Production.json" ``` - [ ] Flags siempre activos: ___ - [ ] Candidatos a hacer permanentes ### 5. Detectar Flags Antiguos ```bash # Flags a├▒adidos hace m├ís de 6 meses sin fecha de expiraci├│n git log --since="6 months ago" --oneline --all -- "appsettings*.json" | \ xargs -I{} git show {}:appsettings.json 2>/dev/null | \ jq '.FeatureManagement // empty' # Buscar comentarios con fechas de expiraci├│n grep -B2 -A2 "FEATURE_\|FeatureManagement" src --include="*.cs" | \ grep -iE "expir|deprecat|remove|todo" ``` - [ ] Flags > 6 meses sin expiraci├│n - [ ] Flags con TODOs de eliminaci├│n ### 6. Analizar Uso de Flags ```bash # Contar referencias de cada flag for flag in $(cat all_flags.txt); do count=$(grep -r "$flag" src --include="*.cs" --include="*.ts" | wc -l) echo "$count,$flag" done | sort -t, -k1 -nr ``` | Flag | Referencias | Estado Config | Recomendaci├│n | |------|-------------|---------------|---------------| | FeatureA | 15 | true (prod) | Hacer permanente | | FeatureB | 0 | true | Eliminar | | FeatureC | 3 | false | Evaluar | - [ ] Matriz de an├ílisis generada ### 7. Generar Plan de Limpieza **Categor├¡as:** | Categor├¡a | Acci├│n | Prioridad | |-----------|--------|-----------| | No usado en c├│digo | Eliminar de config | Alta | | Siempre true > 3 meses | Eliminar flag, mantener c├│digo | Media | | Siempre false > 3 meses | Eliminar flag y c├│digo | Media | | Activo < 3 meses | Mantener | Baja | - [ ] Plan de limpieza generado - [ ] PRs a crear listadas --- ## Template de Documentaci├│n de Flag ```markdown # Feature: NombreFeature ## Metadata - **Creado**: YYYY-MM-DD - **Responsable**: @usuario - **Fecha expiraci├│n prevista**: YYYY-MM-DD ## Descripci├│n Qu├® hace este feature flag. ## Configuraci├│n - Development: true/false - Staging: true/false - Production: true/false ## Rollout Plan 1. [ ] Activar en Dev 2. [ ] Activar en Staging 3. [ ] Activar en Prod (10% -> 50% -> 100%) 4. [ ] Eliminar flag (hacer permanente) ## Rollback C├│mo revertir si hay problemas. ``` --- ## Output Esperado ``` ====== PROC-24 COMPLETADO [TIMESTAMP] ====== Proyecto: [nombre] Sistema de Flags: Microsoft.FeatureManagement / Custom INVENTARIO DE FLAGS: - Total: X - Activos en producci├│n: Y - Inactivos: Z CANDIDATOS A ELIMINACI├ôN: 1. FeatureA - No usado en c├│digo 2. FeatureB - Siempre true desde hace 6 meses 3. FeatureC - Siempre false desde hace 4 meses CANDIDATOS A PERMANENTE: 1. FeatureD - Activo en todos los entornos 4+ meses FLAGS OK (mantener): 1. FeatureE - Activo 2 meses, rollout en curso ACCIONES REQUERIDAS: 1. Crear PR para eliminar FeatureA 2. Crear PR para hacer permanente FeatureD 3. Documentar FeatureE con fecha expiraci├│n ``` --- ## Criterios de ├ëxito - [ ] Todos los flags documentados - [ ] 0 flags no usados en c├│digo - [ ] 0 flags activos > 6 meses sin plan de eliminaci├│n - [ ] Todos los flags tienen fecha expiraci├│n --- ## Alertas y Escalaci├│n | Severidad | Condici├│n | Acci├│n | |-----------|-----------|--------| | WARNING | Flag > 6 meses sin expiraci├│n | Contactar responsable | | WARNING | >10 flags sin documentar | Crear tareas Holded | | INFO | Flag listo para eliminar | Crear PR de limpieza | | INFO | Inventario limpio | Documentar buen estado | --- ## Automatizaci├│n En ejecuci├│n no-interactiva: 1. Escanear configuraci├│n y c├│digo 2. Cruzar flags config vs uso 3. Calcular antig├╝edad 4. Generar reporte 5. Sugerir acciones --- --- ## Output Estructurado (Nexus) Al finalizar, el agente DEBE generar un bloque JSON con el siguiente formato para que Nexus pueda procesarlo automaticamente: ```json { "result": "success", "summary": "Ejecucion de PROC-24 completada. [Descripcion breve de resultados]", "metrics": { "issues_found": 0, "issues_resolved": 0, "items_removed": 15, "space_freed_mb": 500, "custom": { "procedure_specific_metric": "value" } }, "backlog_items": [ { "title": "Titulo del item de seguimiento", "description": "Descripcion detallada si se requiere accion futura", "priority": "medium", "type": "improvement", "tags": ["proc-24"] } ], "next_steps": [ "Accion recomendada 1", "Accion recomendada 2" ], "warnings": [ "Advertencias encontradas durante la ejecucion" ] } ``` **Campos requeridos:** - `result`: `"success"` | `"partial"` | `"failed"` - `summary`: Resumen ejecutivo en 1-3 lineas **Metricas especificas de este procedure:** - flags_total, flags_stale, flags_removed **Criterios de resultado:** - `success`: Procedimiento completado sin errores criticos - `partial`: Completado con algunos problemas menores o items pendientes - `failed`: Error critico o no se pudo completar ## Historial de Ejecuciones | Fecha | Proyecto | Total Flags | No Usados | Para Eliminar | Limpiados | |-------|----------|-------------|-----------|---------------|-----------| | | | | | | |
H1
H2
H3
Bold
Italic
Code
Lista
Num
Task
Code Block
Link
Nexus Platform
Reconectando
Recuperando la conexion
Se ha interrumpido la conexion con el servidor. Estamos reconectando automaticamente.
Reconectando...
Manten esta pestana abierta, volvemos enseguida.
No hemos podido reconectar
El servidor puede estar reiniciandose o tu conexion a internet es inestable.
Reintentar
La sesion ha expirado
Recarga la pagina para iniciar una nueva sesion.
Recargar
Si no vuelve en 30 segundos, recarga la pagina.