Skip to content

Commit fea9c2a

Browse files
committed
feat: update roadmap and pendientes documentation, add new article on portal authentication design
1 parent 5cbd7db commit fea9c2a

4 files changed

Lines changed: 17 additions & 11 deletions

File tree

docs/plan-portal-tiempo-real.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ El portal está completo y es sólido. Lo verificado:
2323

2424
1. **Nada se actualiza solo.** Cero `EventSource`, `setInterval` o `text/event-stream` bajo `src/pages/portal`. Un cliente con el portal abierto no ve la respuesta a su mensaje, ni el hito que acabas de completar, ni que su monitor se cayó, hasta que recarga a mano. El dato *es* de tiempo real (los checks entran cada ~5 min); la interfaz no.
2525
2. **El avance del proyecto depende de que tú edites hitos a mano.** Entre hito e hito, el cliente ve una barra inmóvil aunque haya habido diez deploys.
26-
3. Higiene: el portal **no tiene monitor propio en `/status`** (el único sistema del stack que no se vigila a sí mismo), y **no tiene artículo en `/notes`** pese a ser el feature más grande del repo (regla transversal del roadmap).
26+
3. Higiene: el portal **no tiene monitor propio en `/status`** (el único sistema del stack que no se vigila a sí mismo). El hueco de `/notes` ya está cubierto con dos artículos —"El clientId nunca viene de la URL" (aislamiento entre tenants) y "Dos logins en el mismo sitio, y ninguno conoce al otro" (por qué la auth del portal es propia)—, ambos del 24 jul 2026.
2727

2828
## 1. Decisión técnica: polling con digest, no SSE
2929

docs/plan-roadmap-2026-07.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -426,19 +426,19 @@ briefing sin IA; test del recolector y del truncado.
426426

427427
## Transversal — Artículos `/notes` faltantes
428428

429-
Publicados (13): monitor propio, micro-SIEM, chaos, SLOs, sesiones revocables,
429+
Publicados (14): monitor propio, micro-SIEM, chaos, SLOs, sesiones revocables,
430430
RAG, mutation testing, e2e, SAST ("no solo un scan verde"), bloqueo escalado de
431-
IPs, analizador de dominios, cobros por WhatsApp, y el del `clientId` que nunca
432-
viene de la URL.
431+
IPs, analizador de dominios, cobros por WhatsApp, el del `clientId` que nunca
432+
viene de la URL, y "Dos logins en el mismo sitio, y ninguno conoce al otro"
433+
(por qué el portal no reutiliza la auth del admin).
433434

434435
Cola de artículos (escribir cada uno al cerrar su etapa):
435436

436437
1. **Pasarela de pagos mock**: idempotencia, webhooks firmados, por qué mock.
437438
2. **Bóveda AES-256-GCM**: cifrado por servicio, revelado bajo demanda, qué NO hacer.
438439
3. **Demo read-only** (etapa 3, entregada): aislar por diseño (BD separada) vs filtrar por query.
439-
4. **Portal de clientes**: el feature más grande del repo y el único sin artículo.
440-
5. **k6** (tras etapa 7): carga contra preview, nunca contra prod facturado.
441-
6. **Briefing con IA** (tras etapa 11): IA con criterio, contratos de entrada, fail-open.
440+
4. **k6** (tras etapa 7): carga contra preview, nunca contra prod facturado.
441+
5. **Briefing con IA** (tras etapa 11): IA con criterio, contratos de entrada, fail-open.
442442

443443
Cada artículo: mismo formato del content collection actual, OG image
444444
(`og:generate`), submit IndexNow (`seo:indexnow`), distribución vía workflow

pendientes.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,10 @@ silencioso.
7777
Dos puntos de higiene del mismo plan:
7878
- [ ] El portal no tiene monitor propio en `/status` — es el único subsistema del
7979
stack que no se vigila a sí mismo.
80-
- [ ] El portal no tiene artículo en `/notes`, siendo el feature más grande del
81-
repo (la regla transversal del roadmap dice que cada etapa mayor termina
82-
con el suyo).
80+
- [x] Artículo en `/notes`: **"Dos logins en el mismo sitio, y ninguno conoce al
81+
otro"** (24 jul), sobre por qué el portal no reutiliza la auth del admin.
82+
Junto con "El clientId nunca viene de la URL" cubre las dos decisiones de
83+
diseño del portal que valía la pena contar.
8384

8485
### LAB — Fase 5: load testing con k6
8586

src/pages/notes/index.astro

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const fmtDate = new Intl.DateTimeFormat('es-CO', { day: 'numeric', month: 'long'
3030
<span class="h-px flex-1 bg-gradient-to-r from-white/15 to-transparent max-w-[80px]"></span>
3131
<span>Notas de ingeniería</span>
3232
</div>
33-
<h1 class="text-5xl md:text-6xl font-medium tracking-[-.035em] text-mask leading-[.95] mb-8">
33+
<h1 class="hero-line overflow-hidden text-5xl md:text-6xl font-medium tracking-[-.035em] text-mask leading-[.95] mb-8">
3434
Decisiones,<br/>no tutoriales.
3535
</h1>
3636
<p class="text-[16px] text-ink-100 max-w-xl leading-relaxed">
@@ -64,3 +64,8 @@ const fmtDate = new Intl.DateTimeFormat('es-CO', { day: 'numeric', month: 'long'
6464

6565
</div>
6666
</BaseLayout>
67+
68+
<script>
69+
import { initPageMotion } from '../../lib/motion-reveal'
70+
initPageMotion()
71+
</script>

0 commit comments

Comments
 (0)