Contexto
Dos archivos de stories importan un tipo saliéndose del repo, seis niveles arriba, hacia un repo privado:
src/stories/chat-sim/lib/inboxMessageAdapter.ts:12
src/stories/chat-sim/lib/inboxMessageFixtures.ts:9
import type { Message } from '../../../../../../products/cofoundy-platform/inbox-ai/frontend/src/lib/api';
Dos problemas distintos:
1. Hoy ya es frágil. Esa ruta sólo resuelve en una máquina que tenga el monorepo completo con products/cofoundy-platform/inbox-ai clonado al lado. Cualquiera que clone sólo cofoundy/ui tiene esas stories rotas en typecheck/Storybook. Es import type, así que no afecta runtime — pero sí tsc y el build de Storybook.
2. Bloquea el open source. inbox-ai es privado. Ese import no puede irse a un repo público tal cual, ni por extracción de chat-sim ni abriendo packages/ui.
Decisión requerida (no hay default bueno)
- (a) La story
InboxAIReplacement no va al repo público. Se pierde la demo, se conserva la propiedad.
- (b) Vendorizar el tipo
Message. Cuesta exactamente la propiedad que esa story existe para probar: que el reemplazo está tipado contra la interfaz real de inbox-ai y no contra un espejo copiado a mano que se desincroniza en silencio.
- (c) inbox-ai publica su tipo como paquete o
.d.ts versionado, y ambos consumen eso.
La (c) es la única que conserva la propiedad y desbloquea el OSS; también es la más cara.
Criterios de aceptación
npx tsc --noEmit pasa en un clon sin el monorepo alrededor
- Ninguna ruta relativa sale del repo
- Si se elige (b), queda escrito en el archivo que el tipo es una copia y cómo se detecta la deriva
Verificación (runnable)
grep -rn "\.\./\.\./\.\./\.\./\.\./\.\." src/ ; echo "exit=$?" # espera 1 (sin hits)
Guardrails
- No elegir (b) por default por ser la más rápida: es la que borra el valor de la story
- Notar que esto vive en la celda de stories, no en
chat-sim/** — dentro del subárbol del componente las menciones a inbox-ai son comentarios y fragmentos citados, sin imports. El subárbol sigue siendo liftable.
Scope
src/stories/chat-sim/lib/*.ts. Hallazgo de la lane oss12, verificado por el lead.
Contexto
Dos archivos de stories importan un tipo saliéndose del repo, seis niveles arriba, hacia un repo privado:
Dos problemas distintos:
1. Hoy ya es frágil. Esa ruta sólo resuelve en una máquina que tenga el monorepo completo con
products/cofoundy-platform/inbox-aiclonado al lado. Cualquiera que clone sólocofoundy/uitiene esas stories rotas en typecheck/Storybook. Esimport type, así que no afecta runtime — pero sítscy el build de Storybook.2. Bloquea el open source.
inbox-aies privado. Ese import no puede irse a un repo público tal cual, ni por extracción dechat-simni abriendopackages/ui.Decisión requerida (no hay default bueno)
InboxAIReplacementno va al repo público. Se pierde la demo, se conserva la propiedad.Message. Cuesta exactamente la propiedad que esa story existe para probar: que el reemplazo está tipado contra la interfaz real de inbox-ai y no contra un espejo copiado a mano que se desincroniza en silencio..d.tsversionado, y ambos consumen eso.La (c) es la única que conserva la propiedad y desbloquea el OSS; también es la más cara.
Criterios de aceptación
npx tsc --noEmitpasa en un clon sin el monorepo alrededorVerificación (runnable)
Guardrails
chat-sim/**— dentro del subárbol del componente las menciones a inbox-ai son comentarios y fragmentos citados, sin imports. El subárbol sigue siendo liftable.Scope
src/stories/chat-sim/lib/*.ts. Hallazgo de la laneoss12, verificado por el lead.