ADR 0015 — Acción pública separada
Estado: aceptado ✅ · Fecha: 2026-10-20
Actualizado por: ADR 0066 - el monorepo ya es público: la acción vive en apps/github-action y se usa por subruta.
Contexto
Sección titulada «Contexto»El CLI ya se publica como codarch@0.1.1 y la acción compuesta vive en apps/github-action. La
primera prueba desde un repositorio externo falló al resolver jaminsmoke/codarch/apps/github-action@v1:
GitHub devolvió repository not found porque jaminsmoke/codarch es privado y el token del workflow
de destino no puede leerlo.
Mantener el monorepo privado era un requisito del proyecto. GitHub no permite usar acciones de un repositorio privado desde otro repositorio, ni siquiera del mismo dueño, sin un checkout manual. Un checkout manual dentro del workspace contaminaría el análisis y complicaría el workflow.
La acción no contiene secretos: solo action.yml, el render del comentario, el README y la licencia.
El CLI que ejecuta se instala desde npm.
Decisión
Sección titulada «Decisión»- Repo público dedicado:
jaminsmoke/codarch-action. Contiene únicamente la acción compuesta, el render del comentario, el README y la licencia. El monorepojaminsmoke/codarchsigue privado. - Generado desde el monorepo.
npm run sync:actioncopiaapps/github-actiona.codarch/action-repoy añade un aviso de que el repo es generado. La fuente de verdad sigue siendoapps/github-action. - La acción instala el CLI desde npm. No necesita el código de CodArch en el workspace ni
ejecuta
npm cisobre el proyecto analizado. La versión se fija con el inputversion(0.1.1por defecto). - Tag mayor
v1. Los consumidores usanjaminsmoke/codarch-action@v1. El tag se mueve al sincronizar cambios compatibles; una ruptura de la interfaz de la acción exigev2. - El workflow interno sigue usando
./apps/github-action. Así el monorepo dogfoodea la fuente y no depende de que el repo público esté sincronizado en cada commit.
Consecuencias
Sección titulada «Consecuencias»- Cualquier repositorio, público o privado, puede usar la acción sin clonar CodArch.
- El código de la acción es público, pero el monorepo y su historial no.
- Hay dos copias de los ficheros de la acción.
npm run sync:actiony el tagv1deben actualizarse juntos; el README del repo público lo advierte. - La primera validación externa se hizo en
jaminsmoke/codarch-action-smoke: un PR con un cambio limpio pasó y otro con una dependenciadomain → infrafalló con exit2, comentario y artefacto. - El repo público no publica el CLI; solo la acción. La versión del CLI se gestiona en npm.
Alternativas descartadas
Sección titulada «Alternativas descartadas»- Hacer público el monorepo. Expone todo el código y el historial; no es necesario para distribuir la acción.
- Usar la acción desde el monorepo privado. GitHub no la resuelve desde otro repositorio.
- Checkout manual de CodArch en el workflow del consumidor. Contamina el workspace analizado,
exige un token con acceso al repo privado y complica el
uses. - Publicar la acción en GitHub Marketplace sin repo propio. Marketplace requiere un repo público y una release; el repo dedicado es el paso previo natural.
Hoja de ruta
Sección titulada «Hoja de ruta»Sin fases abiertas; esta decisión se aplica en M3.