Skip to content

Claude/new session jcb7qn - #17

Merged
CesarManzoCode merged 2 commits into
mainfrom
claude/new-session-jcb7qn
Sep 2, 2026
Merged

Claude/new session jcb7qn#17
CesarManzoCode merged 2 commits into
mainfrom
claude/new-session-jcb7qn

Conversation

@CesarManzoCode

Copy link
Copy Markdown
Owner

No description provided.

Extiende el registro de lenguajes de la plataforma (src/lib/code-languages)
con `LanguageId = "sql"` y `ExecutionProfileId = "sql-sqlite3-wandbox"`:
perfil Monaco `sql`, fence `sql`, extensión `.sql`, `main.sql`. Migración
Prisma aditiva (`ALTER TYPE ... ADD VALUE`) agrega `sql` al enum
`ProgrammingLanguage`, sin tocar IDs ni progreso existente.

Wandbox (src/lib/executor/wandbox.ts) gana el perfil `sql-sqlite3-wandbox`:
- `runTests` implementa la semántica de fixtures SQL (sólo para este
  perfil): `effectiveSource = TestCase.stdin + "\n" + sourceCode`, stdin
  real enviado a sqlite = "". C++ y C# no cambian su semántica de stdin.
- `execute()` (run libre) no reinterpreta stdin: manda el SQL tal cual.
- SIN `DEFAULT_SQL_COMPILER` congelado: el preflight que pide el contrato
  técnico (consultar /api/list.json, elegir versión estable no-*-head,
  smoke real) no pudo completarse — la política de red de este entorno
  bloqueó la salida a wandbox.org. En vez de inventar un id, el perfil
  exige `WANDBOX_SQL_COMPILER` por env (mismo patrón que
  JUDGE0_CSHARP_LANGUAGE_ID/PISTON_CSHARP_VERSION) y falla cerrado con
  `ExecutorProfileUnavailableError` hasta que se configure. judge0.ts y
  piston.ts ya fallaban cerrado para perfiles desconocidos — sin cambios.

UI: NEEDS_STDIN_RE agrega `sql` (nunca matchea: un script no lee stdin
interactivo); el campo de entrada libre y el panel de tests visibles
relabelan a "Preparación SQL" en vez de "Entrada"/"stdin" para cursos SQL
(TECHNICAL_CONTRACT §4). Editor: completions de SQL (keywords/snippets del
subconjunto DDL/DML/consultas del curso), tokenizer para fill_blank,
clasificación de errores de compilación (SQLite) y diagnostics (sin
marcadores de línea: SQLite no da archivo/línea/columna, se muestra el
stderr legible).

scripts/verify-content.ts gana un runner de SQL con `node:sqlite`
(DatabaseSync) — no hay `sqlite3` CLI en este entorno de verificación;
`node:sqlite` es el mecanismo "ya disponible más barato/estable" que pide
el contrato, sin introducir una base compartida (una `:memory:` nueva por
caso). Usa `setReturnArrays(true)` para evitar que dos columnas con el
mismo nombre (`a.nombre, b.nombre`) colisionen en un objeto JS — sqlite3
CLI imprime por posición, no por nombre. Tipos ambientales mínimos en
scripts/node-sqlite.d.ts (@types/node en este repo no los trae todavía).

Tests nuevos: sql es LanguageId válido, sql-sqlite3-wandbox pertenece a
sql, fence sql resuelve, Wandbox soporta el perfil (y falla cerrado sin
compiler configurado), fixture se concatena SÓLO para SQL, dos fixtures
ocultos con la misma query producen peticiones distintas, C++/C# no
cambian payload, Judge0/Piston fallan cerrado para SQL.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011GYhqUig6NqJyJV6VrFDjX
Nuevo Course `bases-de-datos` (título "Bases de datos", lenguaje sql,
perfil sql-sqlite3-wandbox) con una CurriculumSection de 4.º semestre
(`s4-base-de-datos-1`, subjectName "Base de Datos I"), transcrito del
paquete de contenido canónico `bd1-ceti-content-pack`: 10 units
(fundamentos/SGBD, requerimientos de información, modelo ER, modelo
relacional, normalización, álgebra relacional, DDL, DML, consultas y
reportes, respaldo + proyecto integrador), 47 lessons, 188 steps y 36
prácticas independientes — 10/10 units y todas las lecciones
`published: true` desde esta entrega. Co-localizado por unidad bajo
prisma/content/courses/bases-de-datos/, registrado con una línea en
prisma/content/courses/index.ts.

El dominio recurrente (cliente/equipo/técnico/ticket/asignación de una
empresa de soporte técnico) se mantiene durante todo el curso, igual que
pide COURSE_CONTRACT.md del paquete. Cada práctica usa `testCase.stdin`
como fixture SQL (CREATE TABLE/INSERT) que el executor antepone al código
del alumno; los tests ocultos usan fixtures distintos a los visibles.

Único ajuste mecánico sobre el paquete fuente: 9 ejemplos `code_example`
runnable de las unidades 6 y 9 referenciaban `cliente`/`ticket` sin
crearlos en el mismo script (asumían un dataset "ya cargado" que Wandbox,
sin estado entre ejecuciones, no tiene). Se les antepuso el mismo dataset
canónico (cliente Ana/Luis/Mara + ticket 10-13) que ya usan decenas de
fixtures de práctica del propio paquete, verbatim — mismo expectedOutput,
mismo enunciado, sólo se completó el script para que corra solo. Ningún
otro cambio de escapes, formato o contenido.

Actualiza los tests de contrato de contenido para cubrir el curso nuevo
(metadata, sección/semestre, orden y publicación de units, totales
47/188/36, 4 steps por lección, slugs de práctica, fence sql, y que las
prácticas con fixture declaran un oculto discriminante) y reconcilia la
lista exacta de cursos del registry (ahora 4) en tests/content/authoring.test.ts.

Verificado con scripts/verify-content.ts (node:sqlite): 60 piezas / 98
casos, todos compilan y producen la salida esperada.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011GYhqUig6NqJyJV6VrFDjX
@vercel

vercel Bot commented Sep 2, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
cpp-ceti Ready Ready Preview Sep 2, 2026 3:21pm UTC

@CesarManzoCode
CesarManzoCode merged commit 58d7802 into main Sep 2, 2026
3 checks passed
@CesarManzoCode
CesarManzoCode deleted the claude/new-session-jcb7qn branch September 5, 2026 00:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants