Sistemas · Bloque I · Unidad 1.1
Capas, estado y evidencia
Recupera primero el modelo y después compruébalo sobre un servicio preparado. Las actividades comparten criterios explícitos, pero no una respuesta ni una secuencia de reparación.
Cómo trabajar este bloque
Realiza SYS-R-101 antes del laboratorio. EnSYS-L-101, descarga el paquete y extráelo en un directorio temporal fuera del repositorio. El launcher debe ejecutarse sinsudo.
Conserva solo fragmentos mínimos de salida y acompaña cada uno con su interpretación. Una salida sin explicar no cuenta como evidencia.
SYS-R-101
Reconstruir dos recorridos entre capas
Debes explicar dos operaciones a otra persona sin consultar primero la unidad: una aplicación lee un archivo local y un cliente solicita un recurso HTTP alojado en otro host.
Abrir actividad, entorno y criterios
E0 · E0 · Sin sistema objetivo. Respuesta local en el navegador y expediente Markdown opcional.
Capacidad
Reconstruir un modelo causal de capas, interfaces, recursos y estado, y reconocer el límite de cada observación.
Enunciado
Dibuja ambos recorridos desde la intención inicial hasta el resultado y anota en cada frontera qué se pide, qué estado importa y qué señal permitiría comprobarlo.
Estado inicial
- La Unidad 1.1 está estudiada, pero debe permanecer cerrada durante el primer intento.
- No hay una avería escondida ni una respuesta única de formato: se evalúa la coherencia causal.
- La plantilla descargable está vacía y solo organiza la evidencia.
Límites del sandbox
- No se ejecutan comandos ni se modifica un sistema.
- No se incluyen credenciales, direcciones reales ni información de terceros.
- Si consultas la teoría después del primer intento, registra qué parte corregiste.
1. Recuperación sin consulta
Hacer visible el modelo que puedes reconstruir de memoria.
- Traza la lectura local desde la aplicación hasta el recurso y el resultado de vuelta.
- Traza la petición remota separando el host cliente, el trayecto de red y el host servidor.
- Marca con un signo de interrogación cualquier frontera cuyo mecanismo no puedas justificar todavía.
2. Observaciones y límites
Convertir las cajas del dibujo en comprobaciones posibles.
- Añade al menos tres observaciones por recorrido.
- Para cada observación escribe qué estado muestra, desde qué perspectiva y qué conclusión sigue abierta.
- Distingue hechos, inferencias y estado deseado mediante etiquetas consistentes.
3. Contraste y transferencia
Corregir el modelo sin sustituirlo por una copia de la teoría.
- Contrasta el primer intento con la Unidad 1.1 y corrige solo las fronteras que hayan cambiado.
- Explica qué parte del recorrido existe tanto en local como en remoto y qué responsabilidades se añaden.
- Formula una observación inicial si el archivo no pudiera leerse y otra si la petición remota no respondiera.
Evidencia que debes conservar
- Mapa anotado de la lectura local.
- Mapa anotado de la petición remota.
- Tabla breve de observación, conclusión permitida y conclusión todavía no demostrada.
- Nota de transferencia y correcciones realizadas tras consultar la teoría.
Criterios de aceptación
- Los recorridos distinguen aplicación, proceso, interfaz del sistema operativo, kernel y recurso final.
- La petición remota separa el estado del cliente del estado del servidor y no trata Internet como una única capa.
- Cada observación se vincula a una interfaz o herramienta y declara qué confirma y qué no confirma.
- Proceso, servicio y aplicación no se utilizan como sinónimos.
- Las inferencias aparecen separadas de los hechos observables.
Decisiones abiertas
- Formato del mapa: texto, Mermaid, dibujo escaneado o tabla.
- Herramientas de observación propuestas, siempre que consulten la capa declarada.
- Nivel de detalle de bibliotecas y runtime sin entrar en llamadas al sistema programadas.
Materiales
- Plantilla de expediente SYS-R-101Estructura vacía para los dos recorridos, las observaciones y la nota de transferencia.
Se guarda solo en este navegador. Puedes descargarlo para enviarlo a Codex junto con los materiales que hayas completado.
Sin borrador guardado.
Revisión y reinicio
Revisión: Codex debe comparar la evidencia con estos criterios, señalar primero el supuesto no demostrado y proponer una sola comprobación siguiente. No hay una solución oficial publicada.
Reinicio: Borrar la respuesta local o iniciar una copia nueva de la plantilla; no existe estado de laboratorio que conservar.
Pistas graduadas
Pista 1 · Empieza por responsabilidades
- Pregunta quién expresa la intención, quién ejecuta y quién media el acceso al recurso.
- No añadas herramientas hasta haber dibujado las fronteras.
Pista 2 · Una señal no valida todo el recorrido
- Un proceso existente y un servicio disponible son afirmaciones distintas.
- Una respuesta de resolución de nombres no demuestra que el puerto o la aplicación respondan.
Pista 3 · Cambia de perspectiva
- En la petición remota hay estado observable en el cliente y en el servidor.
- Anota explícitamente desde qué host se realizaría cada comprobación.
Teoría y documentación permitida
SYS-L-101
Seguir una petición desde curl hasta el proceso y el log
Un servicio HTTP mínimo responde dentro de un contenedor. Debes seguir una petición real desde el cliente hasta el socket en escucha, el proceso que la atiende y el evento que deja en el log.
Abrir actividad, entorno y criterios
EC · EC · Contenedor desechable ejecutado con Podman rootless, Docker rootless o Docker Desktop.
Capacidad
Observar una misma operación desde varias interfaces y construir una explicación causal sin modificar el host ni confundir aislamiento con una máquina virtual.
Enunciado
Arranca el servicio preparado, formula una predicción, ejecuta una petición correlacionada y reúne tres observaciones independientes que permitan reconstruir el recorrido y sus límites.
Estado inicial
- Paquete autocontenido con Containerfile, servicio Python y launcher de alcance validado.
- El runtime asigna un puerto efímero ligado a 127.0.0.1; no se abre una interfaz externa.
- El servicio expone /health y /trace, y registra eventos estructurados en stdout.
- No hay un fallo oculto: el objetivo es aprender a relacionar vistas del mismo estado.
Límites del sandbox
- Extrae el paquete en un directorio creado para el intento, nunca dentro de este repositorio.
- Ejecuta el launcher como usuario normal y no antepongas sudo.
- El launcher rechaza Docker Engine rootful; acepta Podman rootless, Docker rootless o Docker Desktop.
- No publiques el endpoint, no cambies el bind de loopback y no uses credenciales reales.
- La limpieza valida etiquetas y nombres exactos antes de retirar el contenedor o la imagen.
1. Preparar un intento aislado
Separar el sistema objetivo del portfolio y obtener un estado reiniciable.
- Descarga el paquete y colócalo en un directorio desde el que puedas extraerlo.
- Crea un directorio temporal nuevo y entra en la carpeta extraída.
- Ejecuta el diagnóstico antes de construir o iniciar recursos.
attempt_dir="$(mktemp -d -t sys-l-101.XXXXXX)"
tar -xzf sys-l-101-lab.tar.gz -C "$attempt_dir"
cd "$attempt_dir/sys-l-101"
./lab doctor2. Predecir y arrancar
Declarar el recorrido esperado antes de mirar todas las salidas.
- Dibuja una primera predicción con host, runtime, puerto publicado, contenedor, socket, proceso y aplicación.
- Inicia el intento y conserva el ID, el runtime y el endpoint que muestra el launcher.
- Comprueba el estado sin interpretar todavía que «en ejecución» equivale a servicio sano.
./lab start
./lab status
./lab endpoint3. Correlacionar cliente, socket, proceso y log
Observar la misma operación mediante interfaces diferentes.
- Asigna un ID a la petición y conserva el verbose de curl.
- Observa el socket dentro del contenedor y registra dirección, puerto y estado.
- Observa el árbol o la tabla de procesos y relaciona el PID con el programa.
- Consulta los logs del runtime y localiza el evento con el mismo ID de petición.
- Para cada salida escribe qué confirma y qué sigue sin demostrar.
endpoint="$(./lab endpoint)"
request_id="manual-$(date +%s)"
curl --verbose --header "X-Request-ID: $request_id" "$endpoint/trace"
./lab exec ss -ltnp
./lab exec ps -eo pid,ppid,user,stat,args
./lab logs4. Reiniciar y retirar
Demostrar que el estado es desechable y que la limpieza tiene alcance exacto.
- Registra el identificador actual del contenedor.
- Reinicia el intento y comprueba qué estado cambió y cuál se conservó.
- Destruye los recursos del intento y confirma que el launcher ya no encuentra el contenedor.
./lab reset
./lab status
./lab destroy
./lab statusEvidencia que debes conservar
- Expediente completado con objetivo, estado inicial e identificador del intento.
- Predicción inicial y mapa corregido del recorrido.
- Tres fragmentos mínimos de salida: socket, proceso y log, además del verbose relevante de curl.
- Interpretación de cada fragmento y una afirmación que todavía no permite sostener.
- Evidencia del reset o destroy y conclusión final.
Criterios de aceptación
- El paquete se extrae en un directorio temporal fuera del checkout del portfolio y se ejecuta sin sudo.
- El puerto se publica únicamente en loopback y el contenedor descarta capacidades, usa filesystem de solo lectura y limita recursos.
- La misma petición se identifica de forma inequívoca en la salida del cliente y en el log del servicio.
- Las observaciones de socket, proceso y log se interpretan por separado, sin afirmar que una sola demuestra la salud completa.
- El mapa diferencia el proceso del host, el runtime, el espacio de red del contenedor y la aplicación.
- El reinicio o la destrucción actúan solo sobre los recursos etiquetados con el ID del intento.
Decisiones abiertas
- Usar Podman rootless, Docker rootless o Docker Desktop según el entorno disponible.
- Representar el mapa como diagrama, tabla o texto estructurado.
- Elegir /proc como observación adicional del proceso, sin sustituir las tres evidencias mínimas.
Materiales
- Paquete de laboratorio SYS-L-101Containerfile, servicio y launcher para un intento desechable; no contiene una solución.
- Plantilla de expediente SYS-L-101Registro para predicción, comandos, salida mínima, interpretación, reset y conclusión.
- README del paqueteRequisitos, límites de seguridad y referencia de comandos del launcher.
Se guarda solo en este navegador. Puedes descargarlo para enviarlo a Codex junto con los materiales que hayas completado.
Sin borrador guardado.
Revisión y reinicio
Revisión: Codex debe comparar la evidencia con estos criterios, señalar primero el supuesto no demostrado y proponer una sola comprobación siguiente. No hay una solución oficial publicada.
Reinicio: Ejecutar ./lab reset para recrear únicamente el contenedor del intento o ./lab destroy para retirar su contenedor e imagen etiquetados.
Pistas graduadas
Pista 1 · Conserva un identificador común
- La cabecera X-Request-ID permite localizar la misma petición en dos perspectivas.
- No pegues todo el log: conserva el evento mínimo que comparte ese identificador.
Pista 2 · Pregunta quién posee cada vista
- curl observa como cliente; ss consulta sockets; ps o /proc muestran procesos; el runtime conserva stdout.
- Que dos herramientas muestren información relacionada no significa que consulten la misma interfaz.
Pista 3 · Distingue publicación y escucha
- El puerto del host y el puerto dentro del contenedor pueden ser distintos.
- Anota en qué espacio de red existe cada dirección antes de unirlas en el mapa.
Teoría y documentación permitida
Revisión con Codex
Entrega el expediente descargado y, para el laboratorio, únicamente los fragmentos relevantes. Pide a Codex que evalúe modelo, evidencia, operación y comunicación contra los criterios visibles; que señale primero el supuesto no demostrado y que proponga una sola comprobación siguiente.
No necesitas subir logs completos, archivos del runtime ni el directorio del intento. El material no contiene una clave de respuestas.