OBJ-EDGE-DOCS-001: Publicar docs.wetopi.net en internet con HTTPS funcional vía edge WAN v1¶
Objective ID: OBJ-EDGE-DOCS-001 Status: active Drafted by: wetopi-lead (fallback degradado documentado — wetopi-architect GPT-5.6 en 429, cooldown ~23:55Z; el approver valida el draft en el gate de review) Owned by: wetopi-lead (OWN)
Outcome¶
https://docs.wetopi.net responde desde internet con certificado Let's
Encrypt production válido, sirviendo la documentación estática de la
plataforma, a través de los dos nodos edge WAN (rke-wan01/rke-wan02,
Traefik directo según ADR-0006), con basic auth operator-only si el
operador lo mantiene para v1. El DNS público deja de apuntar al host legacy
.76 y resuelve round-robin a 92.222.245.193/.194. El servicio se valida
públicamente desde fuera del clúster con los mismos probes usados por
argo.wetopi.net.
Why¶
- Es el primer servicio internet-facing de la plataforma y el caso de uso de la ventana v1 del ADR-0006 (docs + argo, operator-only).
- Cierra los nodos WAN/edge pendientes que hoy están bloqueados en cards (F2 artifacts, hardening) — sin ellos la ruta no es segura ni auditable.
- Es el pilot Objective del harness V3.1 (runbook Phase 8): ejercita Architect → OBJ.md → Git → Lead → workers → audit → DONE de punta a punta sin tocar producción destructivamente.
Decided architecture (constraints del diseño ya aprobado)¶
- Edge WAN v1 según ADR-0006 (accepted): Traefik directo en WAN IPs,
sin capa L4; DNS round-robin entre
.193/.194. - TLS vía cert-manager + Let's Encrypt production (patrón ya probado en argo.wetopi.net — F3 staging Ready y prod OK verificado).
- Landing de artefactos F2 (infra#21): edge_lb nftables DNAT +
HelmChartConfig Traefik values + Gateway API
wetopi-edge— gated por review independiente antes del merge (t_61c83c2a). - Hardening ops_kubectl (infra#19): sin default-mutación, kubeconfig 0600 VIP-only, fixture — gated por re-review (t_7f2e424b chain).
- Infra#17 rebase+README: sin conflicto con main tras merge de #16.
Acceptance criteria (todos con verificación)¶
| # | AC | Verificación |
|---|---|---|
| AC1 | Infra PRs bloqueados aterrizan: #17 rebase limpio, #19 hardening, #21 F2 artifacts — todos merged con review gate | gh pr view state=merged para 17/19/21 + verdicts approver |
| AC2 | Traefik en rke-wan01/02 sirve ruta docs con TLS LE prod, sin errores de cert ni 5xx en 10 requests |
curl -sSI https://docs.wetopi.net → 200/401 con SAN válido desde red externa; openssl s_client SAN=docs.wetopi.net |
| AC3 | DNS público: docs.wetopi.net → A records .193 + .194 (round-robin), sin registro legacy .76 |
dig docs.wetopi.net muestra solo .193/.194 |
| AC4 | Basic auth operator-only activo si el operador lo confirma para v1 (401 sin creds / 200 con creds) — decisión del operador | probe público 401/200 |
| AC5 | docs estáticos desplegados desde el repo docs (mkdocs build) vía Argo/GitOps al namespace edge | kubectl -n <edge-ns> get deploy,pod Ready; path / sirve el índice |
| AC6 | Validación pública completa desde fuera: HTTPS + cert prod + contenido real | script de probe (patrón t_8ac06401) verde 2× (uno por edge node) |
Verification contract¶
- Todo AC se verifica con salida de comando real registrada en el ledger.
- DNS cutover y applies de infra: cards ops autorizadas + hard gate
operador explícito para el cutover
.76 → .193/.194. - TLS normal siempre; sin
verify=False; secretos nunca en Git.
Constraints¶
- ADR-0006 ventana v1: sin capa L4; docs + argo operator-only.
- La ruta de docs solo puede aterrizar TRAS los merges gated (AC1).
- No modificar tfstate/checkout de tofu fuera del patrón aprobado (state canónico local, applies solo via cards ops).
- Ceph/CSI inputs (t_8eee26e4) quedan FUERA de este Objective — no son prerrequisito para docs estáticos.
Stop conditions¶
- Review gate de infra#21/#19 devuelve REQUEST_CHANGES no resolvible en 2 rondas → BLOCK con evidencia, escalar a approach review.
- LE prod rate-limit o fallo de emisión → documentar, no workaround sin revisión.
- Cualquier hallazgo de seguridad en los F2 artifacts → STOP hasta remediar.
- Si el operador revoca la decisión de ventana v1 → abandon con rollback
DNS a
.76.
Review boundaries¶
- Review independiente OBLIGATORIA: merges infra#17/#19/#21 (approver), y el draft de este Objective (pilot V3.1 — el approver valida el draft como parte del pilot, no como gate de producción).
- Build ≠ Apply: el DNS cutover es apply ops con hard gate humano.
- Audit Lead (PASS/WARN/FAIL) en cada entrega de worker.
Out of scope¶
- Capa L4 edge (VRRP/IPVS/DSR) — futura, post-ventana v1.
- Ceph CSI / PVC (t_8eee26e4), rotación de credenciales legacy (t_b904ba3f).
- wetopi.com / otros dominios — solo wetopi.net.
- Gateway Telegram del architect (montaje aparte, en curso).
Promotion matrix (pilot V3.1)¶
Este Objective es el pilot Phase 8. Su éxito no promociona V3.1 a governance standing por sí solo — requiere también Phase 9 (metrics) y el veredicto del operador (Phase 10 cutover).