Auditoría y verificación del itinerario práctico
Alcance de la auditoría: las 25 guías importadas de preparación y ejercicios, sus conceptos y fixtures de apoyo y la integración con Awesome Copilot Adventures. El nuevo laboratorio 17 es un ejercicio numerado de modernización, no una aventura.
Resolución por laboratorio
| Laboratorio | Hallazgo en el contenido importado | Mejora aplicada |
|---|---|---|
| Configuración de C# | Ediciones globales de orígenes de paquetes, suposiciones de versiones, compilación tratada como verificación | Comprobación de destino y entorno de ejecución, copia aislada, descubrimiento explícito de pruebas |
| Configuración de Python | Configuración sin alcance de intérprete y paquetes y cuotas fijas de planes | Raíz de importación, entorno aislado, sin garantías de cuotas |
| Configuración de Copilot | Capturas y extensiones antiguas tratadas como evidencia de acceso | Flujo actual de inicio de sesión, rol y destino y comprobación con una solicitud inocua |
| Configuración de Spec Kit | Nombre «Dev Kit», suposiciones antiguas de disposición y riesgos de sobrescritura | Disposición de skills fijada en v1.0.4, distinción del modo de comandos e inicialización revisada |
| Configuración del SDK | Aplicación .NET externa y confusión de identidades de CLI y editor | Fixture de Node que prioriza el trabajo sin conexión y autenticación separada de la aplicación |
| 01 Interfaz | Coordenadas de interfaz y predicciones deterministas de respuestas | Contrato pequeño de saludo, comparación de contexto y aserción negativa |
| 02 C# | Explicaciones genéricas y afirmaciones de recuperación de todo el código | Recorrido del código fuente, modelo de inyección de dependencias y datos y documentación ejecutable |
| 02 Python | Ambigüedad de raíz de importación y afirmaciones genéricas sobre capas | Construcción real de Python, limitaciones de JSON y relaciones de datos |
| 03 C# | Flujo público o remoto obligatorio; disponibilidad por título o ejemplar ambigua | Contrato de función local y casos de préstamos activos por ejemplar |
| 03 Python | Mismas suposiciones de publicación; ejecutor incorrecto y garantías de respuesta | Raíz de importación correcta y casos de aceptación BOOK-1..6 |
| 04 xUnit | Interfaz generada en verde usada como evidencia | Pruebas reales de componentes de repositorio, JSON aislado y comprobaciones de mutación |
| 04 pytest | Descubrimiento de pruebas confundido con corrección | Punto de aislamiento del repositorio real, comprobaciones de recopilación y aserción deliberadamente incorrecta |
| 05 C# | Refactorización equiparada a mejora | Caracterización de mayúsculas, ordenación, resolución de referencias y persistencia |
| 05 Python | Cambios de comprensiones y ordenación sin contrato de mutación | Semántica de sorted frente a modificación en el mismo objeto, duplicados, empates e IDs ausentes |
| 06 Prototipo | PRD completo copiado en instrucciones; apariencia que implicaba corrección | PRD pequeño, centavos enteros, lista de comprobación de interfaz accesible y servidor local |
| 07 Duplicación | Mecanismos similares de pedidos y devoluciones tratados como reglas idénticas | Tabla real de políticas de envío, límites y preservación de efectos secundarios |
| 08 Funciones grandes | Grandes reescrituras generadas y transcripciones obsoletas | Una extracción, secuencia de compensación y comprobación negativa de liberación |
| 09 Condiciones | Aplanamiento sin tabla de decisiones | Igualdad, solapamientos, topes, orden y comportamiento explícito de entradas no válidas |
| 10 Análisis de rendimiento | Mejoras prometidas, expansión en paralelo y resta especulativa de retrasos | Carga pequeña, límite definido, muestras sin procesar y resultados no concluyentes permitidos |
| 11 Incidencias | Aplicación vulnerable externa, importación y flujo obligatorios y cierre masivo | Error local de igualdad, evidencia de fallo y éxito y flujo remoto opcional revisado |
| 12 Secretos | Exposición y pruebas públicas y cierre sin autoridad del proveedor | Simulación sin credenciales que empieza por revocación y comprobaciones de orden de etapas |
| 13 Proyecto nuevo | Pila supuesta exclusiva de .NET, sin validación de URL y opciones de CLI inventadas | Contrato RSS, vías Node/TypeScript, adaptaciones de pilas y nombres reales de integración |
| 14 Proyecto existente | Dependencia de repositorio externo y LocalDB y alcance de cargas sin control | Línea base incluida, cambio solo de metadatos, actor confiable y puntos de control de compatibilidad |
| 15 Personalización | target: cloud, herramientas supuestas y precedencia de instrucciones |
Límites reales de rol y harness, limitación de prompts a Local y transferencias acotadas |
| 16 SDK | Aplicación larga para copiar y pegar, herramientas de escritura automática y alternativas que aparentaban éxito | Herramienta probada de solo lectura, actor confiable, política de denegación, ciclo de vida y ejecución real opcional |
| 17 Modernización | Nuevo caso solicitado | Contrato de CSV a SQLite, conciliación de datos, no sobrescritura, consulta de solo lectura y reversión |
Decisiones de integración
- Conservar los nombres originales de archivos de laboratorio y los metadatos
labpara la trazabilidad. - Publicar un catálogo
/hands-on/diferenciado bajo el sitio raíz. - Eliminar la configuración anidada competidora de Jekyll y compilación y las instrucciones obsoletas de publicación, conservando la licencia MIT y la atribución.
- Usar el script de preparación de fixtures en lugar de clones obligatorios del origen.
- Mantener las capturas como referencias históricas etiquetadas, no como indicaciones actuales de interfaz.
- Validar los archivos nuevos o no rastreados dentro del alcance, además de los rastreados; respetar las exclusiones de Git.
- Mantener las implementaciones ejecutables de referencia fuera de las copias preparadas para estudiantes.
Límites de verificación
Las siguientes son formas distintas de evidencia y deben informarse por separado:
| Comprobación | Demuestra | No demuestra |
|---|---|---|
| Comprobaciones de contenido y enlaces | Estructura requerida y fuentes locales resolubles | Que un modelo real siguiera las instrucciones |
| Validación y representación de diagramas | Paleta, accesibilidad, sintaxis y diagramas legibles | Que se haya ejecutado el sistema modelado |
| Contratos de fixtures de Node | Comportamiento local de aplicaciones y herramientas | Inferencia autenticada del SDK |
| Batería de migración de Python | Compatibilidad del fixture y casos seleccionados de fallo y reversión | Durabilidad de producción o seguridad con escritores concurrentes |
| Compilación y pruebas de C# | Que los proyectos seleccionados compilen y sus pruebas se ejecuten | Corrección y seguridad completas de producción |
| Ejercicios reales opcionales | Solo las observaciones reales registradas | Disponibilidad universal de funciones y modelos |
Fallos deliberados de los proyectos iniciales
La prueba de regresión del laboratorio 11, el almacén del 13, la función del 14 y la migración del 17 están incompletos de forma intencional. Una comprobación del repositorio debe confirmar el fallo esperado y el éxito de la referencia del instructor; omitir los casos o aceptar cualquier caída no es suficiente.
Fuentes de referencia
La referencia de Copilot enumera páginas oficiales de GitHub y Microsoft. La referencia de Spec Kit registra la versión fijada y una discrepancia entre documentación y disposición del proyecto original resuelta mediante la implementación de la integración. El estilo de diagramas registra la documentación de GitHub y Mermaid usada para la configuración monocroma y accesible.
Verificación ejecutada el 2026-09-07
| Superficie | Comando o método | Resultado observado |
|---|---|---|
| Comprobaciones del repositorio | npm test |
Pasaron las comprobaciones de enlaces y contenido, los contratos prácticos y las pruebas existentes del repositorio |
| Inventario práctico | node scripts/check-hands-on.js |
Se comprobaron 26 guías y sus metadatos de catálogo y fixtures |
| Estilo de diagramas | node scripts/check-diagrams.js |
Se comprobaron 30 diagramas de tipos flujo, secuencia, estado, clase y ER |
| Representación de diagramas | Mermaid CLI 11.15.0 existente, un navegador, fondo blanco | Se representaron los 30; cada SVG contiene título y descripción; ningún literal hexadecimal de color cromático |
| Orquestación práctica de Node | node --test --test-concurrency=1 scripts/hands-on.test.js |
Pasaron 16 comprobaciones, incluidos los fallos esperados de proyectos iniciales y las referencias del instructor |
| Modernización de Python | HANDS_ON_REFERENCE=1 python -m unittest test_legacy test_modernization -v |
Pasaron 10 pruebas; se ejercitaron la compatibilidad CSV, los enteros grandes exactos, el esquema y los datos y los puntos de control de fallo y reversión |
| Modernización incompleta | Misma batería de modernización con el proyecto inicial | Resultado distinto de cero con el error documentado de migración no implementada |
| Copias de biblioteca de Python | python -m unittest discover -s tests -p "test_*.py" -v en library de cada copia |
Laboratorios 02/03/04: 4 pruebas cada uno; laboratorio 05: 8 pruebas superadas |
| Itinerario pytest | python -m pytest -q -p no:cacheprovider tests en el laboratorio 04 |
Pasaron 4 pruebas con pytest 9.0.3 instalado |
| Copias de biblioteca de C# | dotnet test en cada proyecto de pruebas, -m:1, compilación compartida deshabilitada |
Laboratorios 02/03/04: 17 pruebas cada uno; laboratorio 05: 19 pruebas superadas en .NET 10 |
| Compilaciones de consola y demostraciones de C# | Un proyecto de entrada seleccionado a la vez | Diez proyectos de entrada compilaron sin errores; persisten advertencias existentes de nulabilidad en algunos fixtures |
| Pruebas opcionales de la tienda | dotnet test únicamente en ContosoOnlineStore.Tests |
Pasaron 16 pruebas; no se ejecutaron mediciones comparativas ni escenarios de carga |
| Sintaxis JS/TS | Comprobaciones de sintaxis de Node; eliminación nativa de tipos para la referencia TS | Se analizaron 25 archivos fuente; no fue una comprobación estática de tipos de TypeScript |
| YAML/frontmatter | Analizador YAML existente de Ruby | Se analizaron sitio, flujo de trabajo y frontmatter sin errores de sintaxis |
| URL de referencia | Solicitudes HTTPS secuenciales | El 404 inicial de la documentación del navegador se corrigió con la referencia verificada de accesibilidad de Edge |
Una revisión independiente de solo lectura también detectó y motivó dos correcciones:
- El lanzador de Windows del fixture de funciones grandes referenciaba una solución inexistente. Ahora compila el proyecto real de consola con ajustes de compilación acotados. El lanzador por lotes se revisó, pero no se ejecutó en Windows.
SUMde 64 bits con signo de SQLite reducía el contrato de enteros heredado de Python. La referencia ahora almacena texto decimal validado, lo convierte a enteros al leer y concilia con aritmética de enteros de Python. Una prueba de regresión cubre valores tanto agregados como individuales que superan el rango de 64 bits con signo.
El endpoint principal v3 de NuGet falló en TLS durante la restauración en este entorno. El
endpoint oficial v2 (https://www.nuget.org/api/v2/) funcionó. La sustitución fue
local al comando; no se usó ninguna configuración global de orígenes ni omisión de la verificación de certificados.
Los archivos generados, el perfil del navegador, las cachés de paquetes y los registros se dirigieron al área
de trabajo T9. La validación se ejecutó secuencialmente con cantidades acotadas de procesos.
La primera invocación de .NET mostró su aviso de configuración de certificados de primera ejecución; las ejecuciones
posteriores deshabilitaron explícitamente la generación automática de certificados. No se ejecutó ningún comando de confianza
de certificados ni se limpiaron certificados compartidos.
No se ejecutaron agentes reales de Copilot o Spec Kit, inferencia del SDK, incidencias reales en la nube, revocación del proveedor ni migraciones de producción. Requieren autorización separada y no pueden deducirse de las pruebas locales de contratos. Las adaptaciones a otros lenguajes se etiquetan como diseños salvo que se incluya una referencia ejecutable.
No se reutilizaron como evidencia resultados de capturas importadas ni tablas antiguas de tiempos.