Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 13 additions & 1 deletion .harness/scripts/validate-root-cleanliness.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,19 @@ const allowedDirectories = new Set([
// Prototipo de UI (referenciado desde 77 ficheros) y artefactos de producto —
// product/infra/helm aloja los charts que despliega el CI.
"design",
"product"
"product",
// GT-604 — suite de agentes deterministicos E2E. Entro con `65820f9` sin darse de alta aqui,
// y desde entonces este guardian tenia en rojo el job entero de `Validate documentation`: el
// paso corre ANTES que los inventarios y `bash -e` aborta, asi que ningun otro chequeo del
// workflow llegaba a ejecutarse. El fallo se leia como «documentacion invalida» cuando lo que
// pasaba era que la taxonomia de la raiz se habia quedado atras respecto al repositorio — el
// mismo caso que motivo la entrada de `evolith.yaml` el 2026-07-18.
//
// Va en la RAIZ y no bajo `src/` o `product/` porque los robots son consumidores EXTERNOS del
// despliegue: hablan con el tracker-api por HTTP como lo haria un cliente, sin compartir
// codigo ni configuracion con lo que prueban. `local-test.sh` los invoca como
// `node "$ROOT/robosoft/run.mjs"`, con $ROOT en la raiz del repositorio.
"robosoft"
]);

// Load .gitignore patterns to filter transient directories (.claude/, .tmp/, etc.)
Expand Down
2 changes: 1 addition & 1 deletion README.es.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
[![Plataforma](https://img.shields.io/badge/.NET_10_%7C_PostgreSQL_%7C_React_19-informational?style=for-the-badge)]()
[![Arquitectura](https://img.shields.io/badge/Evolith-Satélite-blueviolet?style=for-the-badge)](https://github.com/beyondnetcode/evolith_arch32)
<!-- BEGIN GENERATED: adr-count — derivado por .harness/scripts/doc-inventory.mjs; NO editar a mano -->
[![ADRs](https://img.shields.io/badge/ADRs-54_decisiones-orange?style=for-the-badge)](./DECISIONS.md)
[![ADRs](https://img.shields.io/badge/ADRs-55_decisiones-orange?style=for-the-badge)](./DECISIONS.md)
<!-- END GENERATED: adr-count -->
[![Licencia](https://img.shields.io/badge/Licencia-Dual_License-informational?style=for-the-badge)](./LICENSE)

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
[![Platform](https://img.shields.io/badge/.NET_10_%7C_PostgreSQL_%7C_React_19-informational?style=for-the-badge)]()
[![Architecture](https://img.shields.io/badge/Evolith-Satellite_Product-blueviolet?style=for-the-badge)](https://github.com/beyondnetcode/evolith_arch32)
<!-- BEGIN GENERATED: adr-count — derivado por .harness/scripts/doc-inventory.mjs; NO editar a mano -->
[![ADRs](https://img.shields.io/badge/ADRs-54_decisions-orange?style=for-the-badge)](./DECISIONS.md)
[![ADRs](https://img.shields.io/badge/ADRs-55_decisions-orange?style=for-the-badge)](./DECISIONS.md)
<!-- END GENERATED: adr-count -->
[![License](https://img.shields.io/badge/License-Dual_License-informational?style=for-the-badge)](./LICENSE)

Expand Down
12 changes: 6 additions & 6 deletions docs/LOCAL_DEV_WITH_K8S_CORE.es.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ de los dos clústeres que sí tendría un despliegue completo del gateway a k8s

> Original en inglés: [LOCAL_DEV_WITH_K8S_CORE.md](./LOCAL_DEV_WITH_K8S_CORE.md).
> Para el onboarding de producto (modelo mental, datos de ejemplo, tour) ver [QUICK_START.es.md](./QUICK_START.es.md).
> ⚠️ `QUICK_START` §3 aún describe el Core como contenedores locales en `:3001/:3002/:3003`;
> **Aviso:** `QUICK_START` §3 aún describe el Core como contenedores locales en `:3001/:3002/:3003`;
> está desactualizado — el Core corre de verdad en el clúster kind como servicios `ClusterIP`.

## Topología
Expand Down Expand Up @@ -136,12 +136,12 @@ node src/apps/tracker-api/seed/seed-e2e.mjs # idempotente; tenants ACME / Glob

## Qué funciona y qué no (sin vender humo)

- El stack del Tracker corre y sirve; el gateway está vivo sin desplegarlo a k8s.
- La gobernanza del Plano 1 (SDLC / compuertas / evidencia) es totalmente local y no necesita el Core.
- ⚠️ Consumir el Core **vivo** necesita su clave real (fricción #2) — o levantar el Core en local.
- ⚠️ `LV-18`: 3 de las 6 tools MCP llaman rutas del Core que dan `404`; es un gap de contrato, no
- **Funciona:** El stack del Tracker corre y sirve; el gateway está vivo sin desplegarlo a k8s.
- **Funciona:** La gobernanza del Plano 1 (SDLC / compuertas / evidencia) es totalmente local y no necesita el Core.
- **Salvedad:** Consumir el Core **vivo** necesita su clave real (fricción #2) — o levantar el Core en local.
- **Salvedad:** `LV-18`: 3 de las 6 tools MCP llaman rutas del Core que dan `404`; es un gap de contrato, no
de cableado, así que falla igual en local que en clúster.
- ℹ️ Este runbook hace que `LV-16` (desplegar el gateway a k8s) sea **innecesario para el dev diario**;
- **Nota:** Este runbook hace que `LV-16` (desplegar el gateway a k8s) sea **innecesario para el dev diario**;
`LV-16` queda solo para verificación de CI / tipo-producción.

## Gaps relacionados
Expand Down
12 changes: 6 additions & 6 deletions docs/LOCAL_DEV_WITH_K8S_CORE.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ that a full k8s deploy of the gateway (gap `LV-16`) would hit.

> Spanish mirror: [LOCAL_DEV_WITH_K8S_CORE.es.md](./LOCAL_DEV_WITH_K8S_CORE.es.md).
> For the product-level onboarding (mental model, seed data, tour) see [QUICK_START.md](./QUICK_START.md).
> ⚠️ `QUICK_START.md` §3 still describes the Core as local containers on `:3001/:3002/:3003`;
> **Warning:** `QUICK_START.md` §3 still describes the Core as local containers on `:3001/:3002/:3003`;
> that is stale — the Core actually runs in the kind cluster as `ClusterIP` services (see below).

## Topology
Expand Down Expand Up @@ -135,12 +135,12 @@ node src/apps/tracker-api/seed/seed-e2e.mjs # idempotent; ACME / Globex / Init

## What works and what doesn't (be honest)

- The Tracker stack runs and serves; the gateway is alive without any k8s deploy of it.
- Plane-1 governance (SDLC / gates / evidence) is fully local and does not need the Core.
- ⚠️ Consuming the **live** Core needs its real key (friction #2) — or run the Core locally.
- ⚠️ `LV-18`: 3 of the 6 MCP tools call Core routes that `404`; that's a contract gap, not a
- **Works:** The Tracker stack runs and serves; the gateway is alive without any k8s deploy of it.
- **Works:** Plane-1 governance (SDLC / gates / evidence) is fully local and does not need the Core.
- **Caveat:** Consuming the **live** Core needs its real key (friction #2) — or run the Core locally.
- **Caveat:** `LV-18`: 3 of the 6 MCP tools call Core routes that `404`; that's a contract gap, not a
wiring one, so it fails the same way local or in-cluster.
- ℹ️ This runbook makes `LV-16` (deploy the gateway to k8s) **unnecessary for day-to-day dev**;
- **Note:** This runbook makes `LV-16` (deploy the gateway to k8s) **unnecessary for day-to-day dev**;
`LV-16` remains only for CI / production-like verification.

## Related gaps
Expand Down
Loading
Loading