From 1f1b3fb9d09ecadf487c17daff629d89e7e397b7 Mon Sep 17 00:00:00 2001 From: aarroyo Date: Sun, 2 Aug 2026 01:14:01 -0500 Subject: [PATCH] =?UTF-8?q?docs(mcp):=20align=20six=20documents=20to=20T-0?= =?UTF-8?q?52=20=E2=80=94=20close=20COH-006/COH-007,=20GAP-020;=20unblock?= =?UTF-8?q?=20GAP-004's=20truth?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Started as GAP-020 bookkeeping and turned into three rows that were lying, found by extending the coherence guard to a fourth check. GAP-020 — closed. Two of the four asks shipped in #108. Content validation is WITHDRAWN by product direction (2026-08-02): T-056 rules, so the Tracker offers the canonical shape and never enforces it, and the schema document now says so as a ratified decision rather than an omission. Tenant-aware persistence is handed to GAP-004: without validation a cache has no consumer, and the version that matters is syncing the catalog from the Core, which is the IPhaseArtifactProfileSource seam GAP-004 owns. COH-006 / COH-007 — closed by fixing the DOCUMENTS, not by building tools. Both rows claimed tracker-gateway exposes 6/6 Tracker MCP tools. It does not, and its controller says so: the Core remains the single agent-facing MCP server, this is a client of it. History: built (c5f3a50), rebound to the BFF (293e3de, T-051), DELETED (614ddff) when T-052 made the Core's evolith-mcp the single surface. So the original finding was live again in its own terms — documents promising a surface that does not exist — with a different remedy. Six documents aligned: PRD 5.3 (EN+ES) rewritten with where each capability is served now, the local-dev guide (EN+ES) whose smoke command pointed at a 404, and banners on ux-concept, blueprint and tracker-agent-assignment-api. Text kept rather than deleted: the capabilities are real and served by the BFF; only the transport is gone. GAP-004 — corrected to BLOCKED, matching the card that was right all along. It had been closed with 'Resolved via Defensive Isolation (Mocks)'. Installing a stand-in is not resolving a dependency, and the code agrees: the stand-in is still the only implementation and every profile it serves is stamped core-standin. The guard now contrasts row against card inside the register — 3 of 108 disagreed, all three with the row claiming closure. Three new tests; the new check goes red when disabled, verified by disabling it. --- .bmad-core/deliverables/prd.es.md | 44 ++-- .bmad-core/deliverables/prd.md | 42 +++- .bmad-core/deliverables/ux-concept.es.md | 9 + .bmad-core/deliverables/ux-concept.md | 8 + .harness/scripts/check-gap-registry.py | 38 +++ .harness/scripts/check-gap-registry.test.py | 40 +++- docs/LOCAL_DEV_WITH_K8S_CORE.es.md | 17 +- docs/LOCAL_DEV_WITH_K8S_CORE.md | 16 +- docs/artifacts/CORE_ARTIFACT_SCHEMAS.es.md | 11 +- docs/artifacts/CORE_ARTIFACT_SCHEMAS.md | 9 +- docs/audit/tracker-gap-reference-catalog.md | 3 +- docs/audit/tracker-gap-tracking.md | 2 +- .../tracker-gaps-opportunities-tracking.md | 220 +++++++++--------- reference/specs/design/blueprint.es.md | 9 + reference/specs/design/blueprint.md | 8 + .../design/tracker-agent-assignment-api.es.md | 9 + .../design/tracker-agent-assignment-api.md | 8 + 17 files changed, 332 insertions(+), 161 deletions(-) diff --git a/.bmad-core/deliverables/prd.es.md b/.bmad-core/deliverables/prd.es.md index 6c74fef0..df525ed6 100644 --- a/.bmad-core/deliverables/prd.es.md +++ b/.bmad-core/deliverables/prd.es.md @@ -174,30 +174,48 @@ La CLI es una interfaz de primera clase — cada capacidad disponible en la Apli ### 5.3 Servidor MCP — Integración Directa de Agentes IA -El Servidor MCP de Evolith Tracker es la superficie de integración que hace posible el SDLC AI-Native. Expone el Tracker como un conjunto de herramientas MCP que cualquier agente IA compatible con MCP (Claude Code, agentes BMAD personalizados) puede llamar directamente desde dentro de su contexto de ejecución. +> [!IMPORTANT] +> **Superado por [`T-052`](../../docs/adrs/T-052-gateway-consumes-core-single-mcp.es.md) (COH-006, COH-007).** +> Esta sección describía un servidor MCP hospedado por el Tracker con seis tools `tracker_*`. Se +> construyeron (`c5f3a50`), se recablearon al BFF (`293e3de`, `T-051`) y después se **eliminaron** +> (`614ddff`) cuando `T-052` decidió que el `evolith-mcp` del Core es la única superficie MCP de +> cara a agentes. La visión sigue siendo válida; la topología no. Se conserva el texto porque el +> requisito que enuncia es real y el lector necesita saber dónde se sirve ahora. + +La superficie de integración que hace posible un SDLC AI-Native es un servidor MCP que cualquier +agente compatible (Claude Code, agentes BMAD personalizados) pueda llamar desde su contexto de +ejecución. **Ese servidor es el `evolith-mcp` del Core, no uno del Tracker.** El `tracker-gateway` +lo reexpone como REST en `/api/core-mcp/tools` y `/api/core-mcp/call` para que un consumidor no +tenga que hablar el protocolo MCP. **La Visión de Integración MCP:** -Un Agente Arquitecto BMAD ejecutándose en Claude Code no necesita abrir un navegador ni cambiar de contexto para interactuar con Evolith Tracker. Se conecta al Servidor MCP del Tracker y puede: +Un Agente Arquitecto BMAD ejecutándose en Claude Code no necesita abrir un navegador ni cambiar de +contexto para interactuar con Evolith Tracker. Se conecta a la superficie MCP y puede: 1. **Verificar su asignación actual** — ¿en qué iniciativa y fase está trabajando? 2. **Leer la spec aprobada** — obtener la spec de Diseño actual y las restricciones de ADR upstream 3. **Enviar un entregable** — subir un contrato OpenAPI o ADR al Tracker 4. **Consultar el estado de compuerta** — ¿el entregable actual está aprobado o necesita revisión? -5. **Recibir feedback** — obtener respuestas estructuradas de compuerta (aprobado/rechazado + razones) sin salir del contexto +5. **Recibir feedback** — obtener respuestas estructuradas de compuerta sin salir del contexto -**Categorías de Herramientas MCP:** +**Dónde viven ahora esas cinco capacidades.** Cada una la sirve el BFF `tracker-api`, que posee el +estado de Plano 1 que el Core no conoce —estado de compuerta, asignaciones, evidencia—, y el MCP del +Core para todo lo upstream. Los seis nombres `tracker_*` de abajo son **históricos** y ya no +resuelven: una petición a `POST /api/mcp/tracker_get_assignment` devuelve `404`. -| Categoría de Herramienta | Propósito | +| Tool retirada (`T-052`) | Capacidad, y dónde se sirve ahora | | :--- | :--- | -| `tracker_get_assignment` | Devuelve la tarea asignada actual para un rol de agente dado | -| `tracker_read_spec` | Devuelve los artefactos de spec relevantes para la fase actual | -| `tracker_submit_deliverable` | Envía un artefacto entregable para evaluación de compuerta | -| `tracker_get_gate_status` | Devuelve el estado de compuerta actual para una iniciativa y fase | -| `tracker_log_activity` | Registra la actividad del agente para la pista de auditoría | -| `tracker_get_upstream_constraints` | Devuelve los ADRs de Evolith Core activos aplicables a la fase actual | - -**Principio de Integración MCP:** El Tracker es la autoridad. El agente recibe instrucciones del Tracker, no al revés. Un agente no puede auto-asignarse, saltarse una compuerta ni anular una restricción upstream vía MCP. +| `tracker_get_assignment` | Modelos de lectura de asignación en el BFF `tracker-api` | +| `tracker_read_spec` | `/design/blueprints/*` y los modelos de lectura de evidencia | +| `tracker_submit_deliverable` | Caminos de escritura de artefacto y evidencia en el BFF | +| `tracker_get_gate_status` | `GET /gates/{sdlcExecutionId}/phase/{phase}` | +| `tracker_log_activity` | El camino de escritura de la entrada de auditoría | +| `tracker_get_upstream_constraints` | `GET /architecture/topologies`, fachada sobre el Core | + +**Principio de Integración MCP:** El Tracker es la autoridad sobre su propio plano. El agente recibe +instrucciones del Tracker, no al revés. Un agente no puede auto-asignarse, saltarse una compuerta ni +anular una restricción upstream. --- diff --git a/.bmad-core/deliverables/prd.md b/.bmad-core/deliverables/prd.md index 49bc4fdb..19e27e9a 100644 --- a/.bmad-core/deliverables/prd.md +++ b/.bmad-core/deliverables/prd.md @@ -224,11 +224,24 @@ The CLI is a first-class interface — every capability available in the Web App ### 5.3 MCP Server — AI Agent Direct Integration -The Evolith Tracker MCP Server is the integration surface that makes AI-native SDLC possible. It exposes the Tracker as a set of MCP tools that any MCP-compatible AI agent (Claude Code, custom BMAD agents) can call directly from within their execution context. +> [!IMPORTANT] +> **Superseded by [`T-052`](../../docs/adrs/T-052-gateway-consumes-core-single-mcp.md) (COH-006, COH-007).** +> This section described a Tracker-hosted MCP server exposing six `tracker_*` tools. They were +> built (`c5f3a50`), rebound to the BFF (`293e3de`, `T-051`) and then **deleted** (`614ddff`) +> when `T-052` decided the Core's `evolith-mcp` is the single agent-facing MCP surface. The +> vision below still holds; the topology does not. Left in place rather than removed because the +> requirement it states is real and the reader needs to know where it is now served. + +The integration surface that makes an AI-native SDLC possible is an MCP server that any +MCP-compatible agent (Claude Code, custom BMAD agents) can call from inside its execution context. +**That server is the Core's `evolith-mcp`, not a Tracker-hosted one.** The `tracker-gateway` +re-exposes it over REST at `/api/core-mcp/tools` and `/api/core-mcp/call` so a consumer need not +speak the MCP wire protocol. **The MCP Integration Vision:** -A BMAD Architect Agent running in Claude Code does not need to open a browser or switch context to interact with Evolith Tracker. It connects to the Tracker's MCP Server and can: +A BMAD Architect Agent running in Claude Code does not need to open a browser or switch context to +interact with Evolith Tracker. It connects to the MCP surface and can: 1. **Check its current assignment** — what initiative and phase is it working on? 2. **Read the approved spec** — get the current Design spec and upstream ADR constraints @@ -236,18 +249,23 @@ A BMAD Architect Agent running in Claude Code does not need to open a browser or 4. **Query gate status** — is the current deliverable approved or does it need revision? 5. **Receive feedback** — get structured gate feedback (pass/fail + reasons) without leaving context -**MCP Tool Categories:** +**Where those five capabilities live now.** Each is served by the `tracker-api` BFF, which owns the +Plane-1 state the Core has no concept of — gate status, assignments, evidence — and by the Core's +MCP for everything upstream. The six `tracker_*` tool names below are **historical** and no longer +resolve; a request to `POST /api/mcp/tracker_get_assignment` returns `404`. -| Tool Category | Purpose | +| Retired tool (`T-052`) | Capability, and where it is served now | | :--- | :--- | -| `tracker_get_assignment` | Returns the current assigned task for a given agent role | -| `tracker_read_spec` | Returns the relevant spec artifacts for the current phase | -| `tracker_submit_deliverable` | Submits a deliverable artifact for gate evaluation | -| `tracker_get_gate_status` | Returns the current gate status for an initiative and phase | -| `tracker_log_activity` | Logs agent activity for audit trail | -| `tracker_get_upstream_constraints` | Returns the active Evolith Core ADRs applicable to the current phase | - -**MCP Integration Principle:** The Tracker is authoritative. The agent receives instructions from the Tracker, not the reverse. An agent cannot self-assign, skip a gate, or override an upstream constraint via MCP. +| `tracker_get_assignment` | Assignment read models on the `tracker-api` BFF | +| `tracker_read_spec` | `/design/blueprints/*` and the evidence read models | +| `tracker_submit_deliverable` | Artifact and evidence write paths on the BFF | +| `tracker_get_gate_status` | `GET /gates/{sdlcExecutionId}/phase/{phase}` | +| `tracker_log_activity` | The audit-entry write path | +| `tracker_get_upstream_constraints` | `GET /architecture/topologies`, itself a facade over the Core | + +**MCP Integration Principle:** The Tracker is authoritative over its own plane. The agent receives +instructions from the Tracker, not the reverse. An agent cannot self-assign, skip a gate, or +override an upstream constraint. --- diff --git a/.bmad-core/deliverables/ux-concept.es.md b/.bmad-core/deliverables/ux-concept.es.md index 53adff2b..0814640e 100644 --- a/.bmad-core/deliverables/ux-concept.es.md +++ b/.bmad-core/deliverables/ux-concept.es.md @@ -2,6 +2,15 @@ > **Bilingual Navigation:** [English Version](./ux-concept.md) +> [!NOTE] +> **Los nombres de tools de abajo son históricos (`T-052`, COH-006/COH-007).** Las seis tools MCP +> `tracker_*` se eliminaron cuando [`T-052`](../../docs/adrs/T-052-gateway-consumes-core-single-mcp.es.md) +> convirtió el `evolith-mcp` del Core en la única superficie MCP de cara a agentes; el +> `tracker-gateway` la reexpone en `/api/core-mcp/*`. Las capacidades descritas son reales y las +> sirve el BFF `tracker-api`: lo que desapareció es el transporte. Se conserva el texto para que el +> requisito no se pierda. + + > **Documento BMAD:** Visión UX Conceptual · Entregable del PM/PO > **Estado:** Aprobado para Revisión de Arquitectura > **Entrada:** [PRD](./prd.es.md) diff --git a/.bmad-core/deliverables/ux-concept.md b/.bmad-core/deliverables/ux-concept.md index 6d5348dd..5d90c867 100644 --- a/.bmad-core/deliverables/ux-concept.md +++ b/.bmad-core/deliverables/ux-concept.md @@ -2,6 +2,14 @@ > **Bilingual Navigation:** [Versión en Español](./ux-concept.es.md) +> [!NOTE] +> **Tool names below are historical (`T-052`, COH-006/COH-007).** The six `tracker_*` MCP tools +> were deleted when [`T-052`](../../docs/adrs/T-052-gateway-consumes-core-single-mcp.md) made the +> Core's `evolith-mcp` the single agent-facing MCP surface; the `tracker-gateway` re-exposes it at +> `/api/core-mcp/*`. The capabilities described here are real and served by the `tracker-api` BFF — +> only the transport named below is gone. Kept rather than deleted so the requirement survives. + + > **BMAD Document:** UX Conceptual Vision · PM/PO Deliverable > **Status:** Approved for Architecture Review > **Input:** [PRD](./prd.md) diff --git a/.harness/scripts/check-gap-registry.py b/.harness/scripts/check-gap-registry.py index eaec5b0d..84dda907 100755 --- a/.harness/scripts/check-gap-registry.py +++ b/.harness/scripts/check-gap-registry.py @@ -59,6 +59,32 @@ def estados_catalogo() -> tuple[dict[str, str], list[str], list[str]]: return estados, dobles, sangradas +def fichas_registro() -> dict[str, str]: + """Estados de las FICHAS de detalle del registro (`### Detail XXX` → `- **Status:**`). + + El registro repite el estado en dos sitios —la fila de la tabla y la ficha de abajo— y nada los + contrastaba. Medido el 2026-08-02: **3 de 108** se contradecían, las tres con la fila diciendo + `RESOLVED` y la ficha `BLOCKED`, y en las tres tenía razón la ficha. `GAP-004` estaba cerrada + con la nota «Resolved via Defensive Isolation (Mocks)» —haber puesto un doble no es haber + resuelto la dependencia— y `COH-006`/`COH-007` decían que el gateway expone seis tools MCP que + `T-052` había borrado del árbol. + """ + estados, actual = {}, None + for linea in REGISTRO.read_text().splitlines(): + m = re.match(r"^### Detail ([A-Z]+-[A-Z0-9/]+)\s*$", linea) + if m: + actual = m.group(1) + continue + if actual and STATUS_VIGENTE.match(linea): + estado = next( + (s for s in ("BLOCKED", "OPEN", "DEFERRED", "RESOLVED") if s in linea), None + ) + if estado: + estados[actual] = estado + actual = None + return estados + + def estados_registro() -> dict[str, str]: """Estados del REGISTRO, la tercera superficie. @@ -101,9 +127,20 @@ def main() -> int: board = estados_board() catalogo, dobles, sangradas = estados_catalogo() registro = estados_registro() + fichas = fichas_registro() problemas = [] + for gid in sorted(set(registro) & set(fichas)): + if registro[gid] != fichas[gid]: + problemas.append( + f"{gid}: en el registro la FILA dice {registro[gid]} y su FICHA dice " + f"{fichas[gid]} — el mismo documento se contradice" + ) + + for gid in sorted(set(registro) - set(fichas)): + problemas.append(f"{gid}: fila en el registro sin ficha `### Detail` con `Status` legible") + for gid in sorted(set(board) & set(registro)): cerrado_b = board[gid] in CERRADO_BOARD cerrado_r = registro[gid] in CERRADO_REGISTRO @@ -139,6 +176,7 @@ def main() -> int: # sólo se solapan en una parte: fuera de esos ids nada aquí comprueba nada, y verlo # escrito evita leer el verde como si cubriera las tres superficies enteras. print(f" board∩registro: {comunes} id(s) contrastados de {len(registro)} en el registro.") + print(f" fila∩ficha dentro del registro: {len(fichas)} contrastadas.") return 0 diff --git a/.harness/scripts/check-gap-registry.test.py b/.harness/scripts/check-gap-registry.test.py index 0e610b7b..3e71986c 100644 --- a/.harness/scripts/check-gap-registry.test.py +++ b/.harness/scripts/check-gap-registry.test.py @@ -19,7 +19,7 @@ GUARD = Path(__file__).resolve().parent / "check-gap-registry.py" -def _repo(tmp: Path, filas): +def _repo(tmp: Path, filas, fichas=None): """Monta un repositorio de usar y tirar con las tres superficies coherentes salvo en lo que cada prueba quiera romper. `filas` = [(id, estado_board, estado_registro)]; un estado a None omite la fila en esa superficie.""" @@ -40,15 +40,23 @@ def _repo(tmp: Path, filas): if er is not None: registro.append(f"| {n} | {er} | [{gid}](#detail-{gid.lower()}) | GAP |") + # Fichas de detalle del registro. Por defecto repiten el estado de la fila, que es lo + # coherente; una prueba las desvia a proposito para comprobar que el contraste lo ve. + for gid, _eb, er in filas: + if er is None: + continue + estado = (fichas or {}).get(gid, er) + registro += ["", f"### Detail {gid}", "", f"- **Status:** {estado}", ""] + (tmp / "docs/audit/tracker-gap-tracking.md").write_text("\n".join(board) + "\n") (tmp / "docs/audit/tracker-gap-reference-catalog.md").write_text("\n".join(catalogo) + "\n") (tmp / "docs/audit/tracker-gaps-opportunities-tracking.md").write_text("\n".join(registro) + "\n") return tmp / ".harness/scripts" / GUARD.name -def correr(filas): +def correr(filas, fichas=None): with tempfile.TemporaryDirectory() as d: - script = _repo(Path(d), filas) + script = _repo(Path(d), filas, fichas) p = subprocess.run([sys.executable, str(script)], capture_output=True, text=True) return p.returncode, p.stdout + p.stderr @@ -90,5 +98,31 @@ def test_id_en_una_sola_superficie_no_es_contradiccion(self): self.assertEqual(code, 0) +class ContrasteFilaFicha(unittest.TestCase): + """La fila y la ficha del MISMO documento tienen que decir lo mismo.""" + + def test_fila_y_ficha_de_acuerdo_pasan(self): + code, _ = correr([("GAP-001", "DONE", "🟢 RESOLVED")]) + self.assertEqual(code, 0) + + def test_fila_cerrada_y_ficha_bloqueada_falla(self): + """La forma exacta de COH-006, COH-007 y GAP-004 el 2026-08-02: tres filas + `RESOLVED` sobre fichas `BLOCKED`, y en las tres tenia razon la ficha.""" + code, salida = correr( + [("GAP-001", "PENDING", "🟢 RESOLVED")], fichas={"GAP-001": "🔴 BLOCKED"} + ) + self.assertEqual(code, 1) + self.assertIn("el mismo documento se contradice", salida) + + def test_fila_sin_ficha_falla(self): + """Una fila sin ficha legible no es un silencio inocuo: la ficha es donde vive el + detalle, y sin ella el estado no se puede contrastar con nada.""" + code, salida = correr( + [("GAP-001", "DONE", "🟢 RESOLVED")], fichas={"GAP-001": "sin estado legible"} + ) + self.assertEqual(code, 1) + self.assertIn("sin ficha", salida) + + if __name__ == "__main__": unittest.main() diff --git a/docs/LOCAL_DEV_WITH_K8S_CORE.es.md b/docs/LOCAL_DEV_WITH_K8S_CORE.es.md index 5796369f..e6c29ada 100644 --- a/docs/LOCAL_DEV_WITH_K8S_CORE.es.md +++ b/docs/LOCAL_DEV_WITH_K8S_CORE.es.md @@ -108,17 +108,20 @@ TRACKER_API_BASE_URL='http://localhost:5100' \ npx nx serve tracker-gateway ``` -Endpoints (prefijo global `api`, por tanto): `GET /api` (raíz), el canal MCP SSE en -`GET /api/mcp/sse` + `POST /api/mcp/messages`, y las seis tools como REST directo en -`POST /api/mcp/tracker_get_assignment`, `…/tracker_read_spec`, `…/tracker_submit_deliverable`, -`…/tracker_get_gate_status`, `…/tracker_log_activity`, `…/tracker_get_upstream_constraints`. +Endpoints (prefijo global `api`, por tanto): `GET /api` (raíz), y la superficie de tools MCP del +Core reexpuesta como REST en `GET /api/core-mcp/tools` y `POST /api/core-mcp/call`. + +> El gateway llegó a hospedar su propio servidor MCP con seis tools `tracker_*` y un canal SSE en +> `/api/mcp/*`. [`T-052`](./adrs/T-052-gateway-consumes-core-single-mcp.es.md) lo eliminó: el +> `evolith-mcp` del Core es la única superficie MCP de cara a agentes y el gateway es *cliente* +> suyo. Esas rutas devuelven `404`, así que el smoke antiguo de esta guía mandaba al lector a un +> endpoint muerto. Smoke: ```bash -curl -s http://localhost:4000/api # gateway vivo -curl -s -X POST http://localhost:4000/api/mcp/tracker_get_assignment \ - -H 'content-type: application/json' -d '{"agentId":"dev"}' # pega a tracker-api:5100 +curl -s http://localhost:4000/api # gateway vivo +curl -s http://localhost:4000/api/core-mcp/tools # las tools del Core, vía gateway ``` ## 5. Arrancar tracker-web en :4200 diff --git a/docs/LOCAL_DEV_WITH_K8S_CORE.md b/docs/LOCAL_DEV_WITH_K8S_CORE.md index 8251614c..72f0150d 100644 --- a/docs/LOCAL_DEV_WITH_K8S_CORE.md +++ b/docs/LOCAL_DEV_WITH_K8S_CORE.md @@ -107,17 +107,19 @@ TRACKER_API_BASE_URL='http://localhost:5100' \ npx nx serve tracker-gateway ``` -Endpoints (global prefix `api`, so): `GET /api` (root), the MCP SSE channel at -`GET /api/mcp/sse` + `POST /api/mcp/messages`, and the six tools as direct REST at -`POST /api/mcp/tracker_get_assignment`, `…/tracker_read_spec`, `…/tracker_submit_deliverable`, -`…/tracker_get_gate_status`, `…/tracker_log_activity`, `…/tracker_get_upstream_constraints`. +Endpoints (global prefix `api`, so): `GET /api` (root), and the Core's MCP tool surface +re-exposed over REST at `GET /api/core-mcp/tools` and `POST /api/core-mcp/call`. + +> The gateway used to host its own MCP server with six `tracker_*` tools and an SSE channel at +> `/api/mcp/*`. [`T-052`](./adrs/T-052-gateway-consumes-core-single-mcp.md) deleted it: the Core's +> `evolith-mcp` is the single agent-facing MCP surface and the gateway is a *client* of it. Those +> routes now `404`, so the old smoke command in this guide sent readers at a dead endpoint. Smoke it: ```bash -curl -s http://localhost:4000/api # gateway alive -curl -s -X POST http://localhost:4000/api/mcp/tracker_get_assignment \ - -H 'content-type: application/json' -d '{"agentId":"dev"}' # hits tracker-api:5100 +curl -s http://localhost:4000/api # gateway alive +curl -s http://localhost:4000/api/core-mcp/tools # the Core's tools, through the gateway ``` ## 5. Run tracker-web on :4200 diff --git a/docs/artifacts/CORE_ARTIFACT_SCHEMAS.es.md b/docs/artifacts/CORE_ARTIFACT_SCHEMAS.es.md index 112c86fd..122fccc2 100644 --- a/docs/artifacts/CORE_ARTIFACT_SCHEMAS.es.md +++ b/docs/artifacts/CORE_ARTIFACT_SCHEMAS.es.md @@ -95,10 +95,13 @@ La tabla de este documento y la de esa clase se mantienen idénticas mediante falla una fila de aquí que nadie cableó, y falla también una entrada de allí que nadie documentó. Se comprobó rompiéndolo en ambas direcciones, no se supuso. -**Sigue siendo un puntero y no una restricción.** Nada en el Tracker valida el contenido de un -artefacto contra estos esquemas: según [`T-056`](../adrs/T-056-three-layer-separation.md) eso es -configuración del tenant y no código del motor. La referencia se ofrece a quien rellena el -artefacto. +**Sigue siendo un puntero y no una restricción, y ahora eso es una decisión ratificada, no un +olvido.** La reapertura de GAP-020 pedía usar estos esquemas para validar lo que rellenan personas +y agentes. El **2026-08-02 dirección de producto retiró esa petición**: según +[`T-056`](../adrs/T-056-three-layer-separation.md) la validación de contenido es configuración del +tenant y no código del motor, así que el Tracker ofrece la forma canónica y nunca la impone. Quien +lea esto más adelante debe tratar el cablear validación aquí como una decisión a revertir, no como +un hueco que rellenar. ## Los artefactos que no tienen esquema, y por qué diff --git a/docs/artifacts/CORE_ARTIFACT_SCHEMAS.md b/docs/artifacts/CORE_ARTIFACT_SCHEMAS.md index 1b747e18..17f7ed36 100644 --- a/docs/artifacts/CORE_ARTIFACT_SCHEMAS.md +++ b/docs/artifacts/CORE_ARTIFACT_SCHEMAS.md @@ -93,9 +93,12 @@ The table in this document and the table in that class are kept identical by here that nobody wired fails, and an entry there that nobody documented fails too. This was verified by breaking it in both directions, not assumed. -**It remains a pointer and not a constraint.** Nothing in the Tracker validates artifact content -against these schemas: per [`T-056`](../adrs/T-056-three-layer-separation.md) that is the tenant's -configuration, not engine code. The reference is offered to whoever fills the artifact in. +**It remains a pointer and not a constraint, and that is now a ratified decision and not an +omission.** GAP-020's reopen asked for these schemas to be used to validate what people and agents +fill in. On **2026-08-02 product direction withdrew that ask**: per +[`T-056`](../adrs/T-056-three-layer-separation.md) content validation is the tenant's configuration +and not engine code, so the Tracker offers the canonical shape and never enforces it. Anyone +reading this later should treat wiring validation here as a decision to reverse, not a gap to fill. ## The artifacts that have no schema, and why diff --git a/docs/audit/tracker-gap-reference-catalog.md b/docs/audit/tracker-gap-reference-catalog.md index 611ee0fb..045aa00c 100644 --- a/docs/audit/tracker-gap-reference-catalog.md +++ b/docs/audit/tracker-gap-reference-catalog.md @@ -2945,9 +2945,10 @@ Corregidas las **29 menciones** distinguiendo dos clases que no son lo mismo: la - **Component:** `Docs` · **Module:** Docs · **Type:** Docs - **Criticality:** P2 · **Complexity:** M - **Resolution / Next step:** Consumir desde el Core las URLs o referencias canónicas de schema de cada artefacto, registrarlas en el catálogo tenant-aware del Tracker y usarlas como base para validar los formatos expuestos y llenados. -- **Status:** `PENDING` (2026-08-01) — reabierta por dirección de producto: aunque el Core define la autoridad de los schemas, el Tracker debe materializar su consumo para operar el flujo SDLC completo. +- **Status (superado):** `PENDING` (2026-08-01) — reabierta por dirección de producto: aunque el Core define la autoridad de los schemas, el Tracker debe materializar su consumo para operar el flujo SDLC completo. - **Triaje 2026-08-01 — PENDIENTE.** Las URLs de los esquemas de artefacto siguen siendo autoridad del Core; el Tracker no las inventa ni las redefine. El trabajo pendiente en este repositorio es consumirlas, persistir o cachear sus referencias de forma tenant-aware, exponerlas en los formatos de fase y usarlas para validar los artefactos que personas o agentes llenan antes de la evaluación del Core. - **Avance 2026-08-02 (la ficha sigue PENDIENTE).** Consumo hecho: mapa como dato en `CoreArtifactSchemaCatalog`, `canonicalSchema` en cada artefacto de `/api/phase-artifact-profiles`, enlace en la pantalla de campos y prueba anti-deriva en los dos sentidos contra `docs/artifacts/CORE_ARTIFACT_SCHEMAS.md`. Queda la persistencia/caché tenant-aware de las referencias y —sujeto a decisión de producto por T-056— usarlas para validar lo que se rellena. +- **Status:** `DONE` — 2026-08-02. Consumo hecho (mapa como dato, `canonicalSchema` en cada artefacto, enlace en la UI, prueba anti-deriva en dos sentidos). **La validación de contenido queda RETIRADA por dirección de producto: manda T-056** — la configura el tenant, no la cableamos. La persistencia/caché tenant-aware pasa a `GAP-004`: sin validación no tiene consumidor, y la versión que sí importa es sincronizar el catálogo desde el Core, que es la costura de `IPhaseArtifactProfileSource` y está bloqueada aguas arriba. #### GAP-021 diff --git a/docs/audit/tracker-gap-tracking.md b/docs/audit/tracker-gap-tracking.md index 286cfb15..ec4578ca 100644 --- a/docs/audit/tracker-gap-tracking.md +++ b/docs/audit/tracker-gap-tracking.md @@ -30,7 +30,7 @@ This board is the single source of truth for Tracker technical debt, gaps, oppor | [`CP-16`](./tracker-gap-reference-catalog.md#cp-16) | Falta una bitácora SDLC por iniciativa que una artefactos, ediciones, aprobaciones, agentes, evaluaciones Core y decisiones | El seguimiento queda repartido entre pantallas y logs técnicos, sin una línea de tiempo entendible para auditoría o gestión | No hay ledger de negocio que explique el recorrido completo de una iniciativa tenant-aware | `Governance/Audit` | Cross | P1 | M | `PENDING` | | [`CP-03`](./tracker-gap-reference-catalog.md#cp-03) | La experiencia de llenado de artefactos no se genera desde los formatos del Core ni guía a personas y agentes con validación incremental | El usuario ve formularios locales o genéricos en vez de wizards derivados del contrato que luego será evaluado | Los formatos de fase viven en catálogos/stand-ins; no hay renderer común de artifact schema con borrador, validación, recomendaciones y evidencia | `WEB/Artifacts` | Cross | P1 | L | `PENDING` | | [`CP-13`](./tracker-gap-reference-catalog.md#cp-13) | El Tracker no tiene un editor documental avanzado con Markdown canónico y modo visual tipo Word | Editar artefactos complejos sería lento o demasiado técnico, y el formato interno puede perder portabilidad | Se necesita edición Markdown avanzada, WYSIWYG, tablas, referencias, comentarios y guardado interno en MD | `WEB/Artifacts` | Cross | P1 | L | `PENDING` | -| [`GAP-020`](./tracker-gap-reference-catalog.md#gap-020) | Faltan las direcciones de los esquemas de artefactos que publica el núcleo | No hay forma de comprobar automáticamente que un documento entregado tiene la forma correcta | No se registran las URL de esquema de artefacto que provienen del núcleo | `Docs` | Cross | P2 | M | `PENDING` | +| [`GAP-020`](./tracker-gap-reference-catalog.md#gap-020) | Faltan las direcciones de los esquemas de artefactos que publica el núcleo | No hay forma de comprobar automáticamente que un documento entregado tiene la forma correcta | No se registran las URL de esquema de artefacto que provienen del núcleo | `Docs` | Cross | P2 | M | `DONE` | | [`CP-17`](./tracker-gap-reference-catalog.md#cp-17) | No hay generación gobernada de Word y PDF desde el Markdown canónico de los artefactos | El equipo puede aprobar un documento en el Tracker, pero no obtener una versión portable y fiel para comités, contratos o auditorías | Falta pipeline de exportación con branding tenant, anexos, diagramas renderizados y huella de versión | `Artifacts/Export` | Cross | P2 | M | `PENDING` | | [`CP-18`](./tracker-gap-reference-catalog.md#cp-18) | No existe un framework seguro de plugins documentales para Mermaid, diagramas y bloques enriquecidos | Los artefactos necesitan diagramas y gráficos, pero cada capacidad se tendría que improvisar en el editor o rompería la exportación | Mermaid y otros bloques deben renderizarse, validarse, sanitizarse y exportarse de forma consistente | `WEB/Artifacts` | Cross | P2 | M | `PENDING` | | [`CP-09`](./tracker-gap-reference-catalog.md#cp-09) | Las capacidades técnicas de arquitectura, drift, topología, knowledge y upgrade no están modeladas como recomendaciones opcionales dentro del flujo SDLC | El producto puede oscilar entre ignorarlas por completo o tratarlas como bloqueantes impropios | Core ofrece señales de repo facts, drift y operaciones consultivas, pero el Tracker no tiene superficie advisory tenant-configurable para pedirlas y adjuntarlas al expediente | `Architecture/WEB` | Cross | P2 | L | `PENDING` | diff --git a/docs/audit/tracker-gaps-opportunities-tracking.md b/docs/audit/tracker-gaps-opportunities-tracking.md index c27a1f15..98089c40 100644 --- a/docs/audit/tracker-gaps-opportunities-tracking.md +++ b/docs/audit/tracker-gaps-opportunities-tracking.md @@ -25,114 +25,114 @@ This document is the only operational gap register in this repository. The maste | # | Status | ID | Type | Category | Component | Module | Story(ies) | Description | Resolution / Next Step | Criticality | Complexity | |---:|---|---|---|---|---|---|---|---|---|:---:|:---:| -| 1 | 🟡 OPEN | [GAP-020](#detail-gap-020) | Docs | Documentation gap | Docs | Docs | N/A | Artifact Schema URLs from Core Missing | NARROWED 2026-08-02, not closed. The reopen asked for FOUR things and two are done. **Done:** the references are consumed as data — `CoreArtifactSchemaCatalog` holds the correspondence, every artifact in `GET /api/phase-artifact-profiles` carries a `canonicalSchema` with the published `$id`, and the artifact-fields screen renders it as a link. `provenance` separates `core-schema` from `tool-output` (the Core publishes none on purpose) and from `none` (nothing upstream), because those are different absences. The mapping is a written decision — a slug matcher would miss `security-scan-result` ⇄ Security Scan Report and two others — so a test compares the code against `CORE_ARTIFACT_SCHEMAS.md` in both directions, verified by breaking it both ways. **Still open:** (1) tenant-aware persistence or caching of the references — today the map is static in code, which is arguably right since the references are Core-authoritative and tenant-agnostic, but that is a judgement the row has not ratified; (2) using the schemas to validate what people and agents fill in. Point 2 collides with T-056 — content validation is the tenant's configuration, not engine code — so it needs a product decision before anyone builds it, and this row must not read as done while it is unresolved. | 🟡 MEDIUM | 🟡 MEDIUM | +| 1 | 🔴 BLOCKED | [GAP-004](#detail-gap-004) | GAP | Missing capability / corrective gap | API | N/A | N/A | 3 dependencias upstream bloqueadas (Core API, UMS JWKS, UMS Auth Graph) | BLOCKED — the row is corrected to match its own card, which was right all along. It was marked RESOLVED with the note «Resolved via Defensive Isolation (Mocks)», and installing a stand-in is not resolving a dependency. The code agrees with the card: `StandInPhaseArtifactProfileSource` is still the only implementation of `IPhaseArtifactProfileSource`, every profile it serves is stamped `core-standin`, and the interface's own documentation says a Core-sync implementation replaces it «when Evolith Core publishes the catalog (GAP-004 resolved)». The three upstream dependencies — Core API, UMS JWKS, UMS Auth Graph — are unchanged. This is also where the residue of GAP-020 lands: syncing the artifact catalog from the Core instead of mirroring it belongs to this seam. | 🔴 CRITICAL | 🔴 HIGH | | 2 | 🟡⏳ DEFERRED | [OPP-002](#detail-opp-002) | OPP | Improvement opportunity | Backend | N/A | N/A | Extraer AuditTrail como Shared Kernel — 5+ contextos implementan historiales inmutables | Pending owner/action definition in this register. | 🟠 HIGH | 🔴 HIGH | -| 3 | 🟢 RESOLVED | [GAP-023](#detail-gap-023) | Docs | Documentation gap | Docs | Docs | N/A | Re-Do Flow Not Fully Designed | RESOLVED — stale row; the evidence was in the catalog and never reached this register. `tracker-gap-reference-catalog.md` closed it on 2026-07-20 with «YA HECHA» and named the artifact. Re-verified here rather than taken on trust: `reference/specs/design/tracker-redo-flow-design.md` is 254 lines with trigger conditions, the state model, the domain model inside the Release context, the recalculation algorithm, impact propagation, the human-authorization gate, domain events and a traceability table. Its §10 lists five scheduling decisions (RD-D1…RD-D5) explicitly registered as proposals awaiting PO ratification — that is a decision pending an owner, not a design that is missing. | 🟡 MEDIUM | 🟡 MEDIUM | -| 4 | 🟢 RESOLVED | [GAP-025](#detail-gap-025) | Docs | Documentation gap | Docs | Docs | N/A | Portal DDD incomplete — NARROWED 2026-08-01: the strategic-map half is DONE (`reference/specs/architecture/bounded-context-map.md` calls itself «the single, authoritative strategic map» of the 9 contexts, with integration patterns and cross-context events). What remains is the four support contexts. | RESOLVED — stale row, same shape. The catalog closed it on 2026-07-19; this register kept the narrowed half open. Verified directly: `bounded-context-map.md` §2 classifies all nine contexts and names the four supporting ones — Governance, Artifacts, Metrics, Integration — each linked to its own tactical model, and all ten `ddd-model.md` files exist on disk. Both halves of the row are satisfied. | 🟡 MEDIUM | 🟡 MEDIUM | -| 5 | 🟢 RESOLVED | [GAP-016](#detail-gap-016) | Docs | Documentation gap | Docs | Docs | N/A | Roadmap Has No Calendar Dates | RESOLVED — stale row. `reference/specs/design/tracker-implementation-roadmap.md` has carried `Document Status: SUPERSEDED — historical NestJS-era draft` since it was corrected, and the marker cites **this row by id**: «SUPERSEDED (GAP-016)». The roadmap planned a NestJS build that was executed in .NET, so «no calendar dates» is moot on a document that describes a plan already carried out under a different stack. The other board, `tracker-gap-tracking.md`, recorded this correctly; this register did not. | 🟡 MEDIUM | 🟡 MEDIUM | -| 6 | 🟢 RESOLVED | [COH-012](#detail-coh-012) | GAP | Missing capability / corrective gap | Backend | Discovery | US-DIS-006 | Gherkin covers only 2 of 4 CRUD operations (Create, Update). Delete and Read entirely missing. Zero edge cases. | RESOLVED — 9 scenarios added to `docs/design/discovery-functional-specs.md`, covering Create (type derivation for 0/1/2/7 products against `InitiativeScope.Derive`, the `Initiative.TenantRequired` guard, and `ConsolidateFrom` lineage), Read (own-tenant hit, and other-tenant read returning exactly what a non-existent id returns — the shape that stops the id being confirmed), and withdrawal. **The row's premise was partly wrong and is corrected rather than obeyed:** there is no Delete in this aggregate and there must not be. An initiative is superseded into another (`Supersede` → `consolidated`, BR-DIS-005) because its lineage is governance evidence. Writing a Delete scenario would have satisfied the row and described a system that does not exist. The COH-012 probe in `falsifiable-claims.json` is therefore withdrawn, with the reason recorded in that file: it had inherited the same false premise. | 🟢 | 🟢 | -| 7 | 🟢 RESOLVED | [GAP-011](#detail-gap-011) | Docs | Documentation gap | Docs | Docs | N/A | C4 Topology No English version | RESOLVED — the row was TRUE and had been mismeasured. `c4-macro-topology-phase1.md` existed, was labelled «English (this document)» and passed `check-bilingual-parity`, but 86 of its 87 non-empty lines were byte-identical to the Spanish file: only the navigation banner had been translated. It is now genuinely in English — prose, diagram descriptions and relationship labels — and its entry was removed from `untranslated-allowlist.json`, which drops from 9 declared to 7. Note for the record: the other board, `tracker-gap-tracking.md`, marked this DONE while the file was still Spanish. | 🟡 MEDIUM | 🟡 MEDIUM | -| 8 | 🟢 RESOLVED | [GAP-017](#detail-gap-017) | Docs | Documentation gap | Docs | Docs | N/A | Discovery Canvas Has No ES Version | RESOLVED — same defect and same correction as GAP-011. `DISCOVERY_CANVAS.md` was 23 of 24 non-empty lines identical to `DISCOVERY_CANVAS.es.md`; the English label was the only English in it. Now translated in full and removed from `untranslated-allowlist.json`. Both boards had this backwards on direction — one said the ES version was missing, the other said the EN one was — and what was actually missing was English content behind an English filename. | 🟡 MEDIUM | 🟡 MEDIUM | -| 9 | 🟢 RESOLVED | [COH-009](#detail-coh-009) | INCO | Source incoherence | Backend | Release | All REL | BR-003 conflated: product-brief = "no deploy without QA gate", but 5+ stories invoke as "human authorization required." Two rules sharing one ID. | RESOLVED — and the repository says so in the row's own words. The business-rule table in `evolith-tracker-crosscutting-diagram.md` now carries a `BR-010` row, *CFR Quality Threshold*, whose own description reads «escindida de BR-003 por COH-009; BR-003 es sólo la firma humana». The split this row asked for was made, credited to this row, and the row was never moved. Verified across the repository: every `BR-003` occurrence outside the audit tree means Human Sign-Off and nothing else, and the QA-gate half lives as `BR-010` — cited by `reference/specs/qa/` («no deployment is authorized without an approved QA verdict and CFR < 2%»), by the test strategy against `PhaseGateEvaluator`, and by the Re-Do flow design. Two rules, two ids. | 🟢 | 🟢 | -| 10 | 🟢 RESOLVED | [COH-016](#detail-coh-016) | INCO | Source incoherence | Backend | Release | All REL | Three gap surfaces share one id namespace and only two were kept in step; 5 of the 34 shared ids disagreed. | RESOLVED — found while closing COH-009 and the two translation rows, and recorded here because it explains all of them. This repository keeps THREE gap surfaces sharing one id namespace: this register, `tracker-gap-tracking.md` and `tracker-gap-reference-catalog.md`. `check-gap-registry.py` kept the last two in step and never looked at this one. Measured on 2026-08-01: 34 ids in common, and **5 of them contradicted each other** — COH-012, GAP-016, GAP-023 and GAP-025 closed on the board and open here, GAP-020 the reverse. Neither surface was the reliable one: the board wrongly claimed GAP-011 and GAP-017 done while both files were still Spanish, and this register wrongly kept three closed rows open. Fixed by extending the guard to compare the two vocabularies on the only thing both state unambiguously — closed or not — with six self-tests, three of which go red when the comparison is disabled. | 🟢 | 🟢 | -| 11 | 🟢 RESOLVED | [GAP-013](#detail-gap-013) | Docs | Documentation gap | Docs | Docs | N/A | 14 Technical Design Docs Lack ES Version | REFUTED and MEASURED 2026-08-01. The row says 14 technical design documents lack a Spanish version. `reference/specs/design/` holds **20** documents and **every one** has its `.es.md` — zero missing. Repository-wide, 19 `.md` files have no Spanish pair, and **9 of them are under `docs/audit/`**: audit reports, corpus triages and this register itself, which are working documents rather than product documentation. The other ten are READMEs and task notes (`robosoft/README.md`, `product/infra/helm/README.md`, `Tracker.ArchitectureTests/README.md`, `docs/tasks/*`). None is a technical design document. **A related defect DOES survive and is tracked elsewhere:** having the pair is not having the translation — `check-translation-language` found 9 documents whose `.md` is written in Spanish, which is what `GAP-011` and `GAP-017` are about. | 🟡 MEDIUM | 🟡 MEDIUM | -| 12 | 🟢 RESOLVED | [GAP-015](#detail-gap-015) | Docs | Documentation gap | Docs | Docs | N/A | DECISIONS.md Lacks Description of T-001 Technical Rationale | Resolved 2026-08-01 by writing `docs/adrs/T-001-nx-monorepo-orchestration.md` (+ `.es`). **The row was right and understated it:** the single line T-001 did carry was also WRONG. It said «npm workspaces con Nx», and no `package.json` in this repository declares a `workspaces` field — Nx orchestrates by PROJECT GRAPH (`project.json` plus the `@nx/vite`, `@nx/webpack`, `@nx/eslint` and `@nx/jest` inference plugins in `src/nx.json`). A reader would have looked for a `workspaces` array, not found one, and concluded the monorepo was misconfigured. The ADR records the reason that decided it — `tracker-api` is .NET, and npm workspaces links `node_modules` between npm packages, so it would have covered three projects of four and left the largest outside — and the DECISIONS entry is corrected in both languages. | 🟡 MEDIUM | 🟡 MEDIUM | -| 13 | 🟢 RESOLVED | [GAP-021](#detail-gap-021) | Docs | Documentation gap | Docs | Docs | N/A | Redis in Docker Compose Without Requirement | REFUTED TWICE against the repository 2026-08-01. **The premise is gone:** there is no `docker-compose` file in this repository at all, no Redis in the Helm charts under `product/infra/helm/` — which is the real deployment — and no Redis in application code. **And the requirement it says is missing was decided:** `T-026` («Redis solo para soporte operacional») is recorded in `AdrRegistryEndpoints`, stating «Redis is operational support only (cache/locks/jobs/idempotency); PostgreSQL is the system of record». The row asks for a requirement that exists, about a file that does not. | 🟢 LOW | 🟡 MEDIUM | -| 14 | 🟢 RESOLVED | [GAP-022](#detail-gap-022) | Docs | Documentation gap | Docs | Docs | N/A | SPACE Metrics Not Defined | REFUTED by `check-falsifiable-claims` 2026-08-01: `reference/specs/metrics/prd.md` carries `REQ-MET-03` — «Compute SPACE metrics (Satisfaction, Performance, Activity, Communication, Efficiency)» — with acceptance criteria naming all five scores plus trend, threshold and last-computed timestamp. The framework is defined; the row is stale. | 🟡 MEDIUM | 🟡 MEDIUM | -| 15 | 🟢 RESOLVED | [COH-008](#detail-coh-008) | GAP | Missing capability / corrective gap | Backend | Release | US-REL-004 | DeploymentRecord Aggregate Root NEVER created by any story. UC-005b ("records a DeploymentRecord") cannot be fulfilled. | REFUTED against the code 2026-08-01: the aggregate the row says was never created EXISTS, complete. `Tracker.Domain/Release/DeploymentRecord` ships `Start`, `Finish` and `RollBack`; it persists to `tracker_release.deployment_records`; three endpoints expose it in `ConstructionReleaseEndpoints` (`POST /`, `POST /{id}/finish`, `POST /{id}/rollback`); and `ConstructionReleaseTests` covers it. UC-005b («records a DeploymentRecord») is therefore fulfillable — the row describes a state of the repository that has not held for some time, and nobody moved it. | 🟡 | 🟡 | -| 16 | 🟢 RESOLVED | [COH-005](#detail-coh-005) | GAP | Missing capability / corrective gap | Infra | Infra | US-INF-002 | Creates 10 schemas but omits `tracker_audit`. Data design defines 11 schemas; audit trail (BR-009) backbone missing. | Resolved by SUPERSESSION 2026-08-01, and the row simply never moved: `T-047` (Accepted 2026-07-19) ratifies the consolidated four-schema topology, supersedes `T-028` (schema-per-context, 10 schemas) and **names COH-005 among the gaps it closes**. `tracker_audit` was never created ON PURPOSE — the audit aggregates live in `tracker_governance`, where they work: `audit_entries` is queried in production, `GT-603` typed its actor, and `GT-588` wired signed transparency statements on top of it. The data design says so itself: sections 3–12 are «the original 2026-06-07 TARGET design … kept for traceability only … read them as intent, never as a description of the database». Nothing was missing; a document and the code disagreed, and the ADR already decided which one wins. | 🟡 | 🟡 | -| 17 | 🟢 RESOLVED | [COH-002](#detail-coh-002) | GAP | Missing capability / corrective gap | Backend | Discovery | US-DIS-006,007 | Discovery refinement entity has no persisted `status` column. States DRAFT/IN_REFINEMENT/SPLIT referenced in specs cannot be persisted; DDD model also missing the status field. | Resolved / Obsolete: El proceso de partición y refinamiento queda fuera del alcance de Tracker; las iniciativas sólo entran cuando están listas. | 🟢 LOW | 🟢 LOW | -| 18 | 🟢 RESOLVED | [COH-004](#detail-coh-004) | INCO | Source incoherence | Backend | QA | US-QA-001..004,006,008,011 | "TestRun" used in 7 stories but NOT in DDD model. DDD defines TestCycle (container) + TestExecution (atomic). TestCycle Aggregate Root never used by any story. | Resolved: TestCycle/TestExecution es el estándar canónico oficial; TestRun se depreca por ambiguo. Glosario actualizado. Historias asumen TestCycle. | 🔴 | 🔴 | -| 19 | 🟢 RESOLVED | [GAP-019](#detail-gap-019) | Docs | Documentation gap | Docs | Docs | N/A | Discovery requirements not broken down into implementable detail | Resolved: Se creó `docs/design/discovery-functional-specs.md` extrayendo las reglas de negocio, máquina de estados y cadenas de aprobación directamente del modelo DDD (Initiative.cs). | 🔴 HIGH | 🟡 MEDIUM | -| 20 | 🟢 RESOLVED | [GAP-010](#detail-gap-010) | Docs | Documentation gap | Docs | Docs | N/A | PRODUCT_VISION.md No English version | Resolved: PRODUCT_VISION.md ya se encontraba traducido y actualizado en inglés. Registro obsoleto. | 🟢 HIGH | 🟡 MEDIUM | -| 21 | 🟢 RESOLVED | [COH-010](#detail-coh-010) | INCO | Source incoherence | Backend | Construction | US-CON-008 | DDD defines `markAsDone()` but no `reopen()`/`revertStatus()`. Yet story allows DONE→IN_REVIEW regression. Contract breach between spec and domain model. | Resolved: Falsa alarma. La regresión real operaba en PhaseProgression y es estrictamente monótona. | 🟡 | 🟡 | -| 22 | 🟢 RESOLVED | [COH-001](#detail-coh-001) | INCO | Source incoherence | Backend | Discovery | US-DIS-002..005,011 | Status naming: `CANVAS_SUBMITTED` vs DB `submitted`. InitiativeStatus enum undefined in DDD. `under_review` in DB but zero specs. | Resolved: El desajuste se arregló previamente (2026-07-20) extrayendo InitiativeStatus como constantes y aplicando CHECK constraint. | 🟡 | 🟡 | -| 23 | 🟢 RESOLVED | [COH-003](#detail-coh-003) | GAP | Missing capability / corrective gap | Backend | Discovery | US-DIS-006 | Violates Small Aggregates pattern: nests child records inside a parent aggregate instead of referencing them by UUID. AGENTS.md mandates UUID refs only. | Resolved: No verificable (la historia US-DIS-006 no existe). El código actual SÍ utiliza referencias UUID correctamente. | 🟡 | 🟡 | -| 24 | 🟢 RESOLVED | [COH-011](#detail-coh-011) | INCO | Source incoherence | Backend | Discovery | US-DIS-003 | "ApprovalChain" aggregate referenced in Gherkin + Tech Reqs, but DDD model only defines `ApprovalGate` VO (0..1 cardinality). No ApprovalChain Aggregate Root exists. | Resolved: El código está bien (implementa ApprovalChain nativamente); el error era documental en una spec antigua. | 🟡 | 🟡 | -| 25 | 🟢 RESOLVED | [COH-006](#detail-coh-006) | GAP | Missing capability / corrective gap | CLI | CLI | US-CLI-010 | README says "MCP polling/sampling/agent SDK" but 0 of 6 MCP tools exist. | Resolved: Tier 2 BFF (`tracker-gateway`) now exposes 6/6 Tracker MCP tools via SSE and REST. | 🟡 | 🟡 | -| 26 | 🟢 RESOLVED | [COH-007](#detail-coh-007) | GAP | Missing capability / corrective gap | CLI | CLI | US-CLI-010 | PRD §5.3 defines 6 MCP tools; 0 implemented. BR-009 audit unenforceable via MCP. | Resolved: Tier 2 BFF (`tracker-gateway`) now exposes 6/6 Tracker MCP tools connected to live services. | 🟡 | 🟡 | -| 27 | 🟢 RESOLVED | [COH-300](#detail-coh-300) | GAP | Missing capability / corrective gap | Backend | Construction | US-CON-008 | Architecture Drift blocks DONE transition scenario already present | Resolved; evidence captured in the description. | 🟠 HIGH | 🟢 LOW | -| 28 | 🟢 RESOLVED | [COH-304](#detail-coh-304) | GAP | Missing capability / corrective gap | Backend | Construction | US-CON-005 | Shell compliance fixed: WFE/IntegrationFabric/TenantConfig injected; seq diagram updated | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | -| 29 | 🟢 RESOLVED | [COH-305](#detail-coh-305) | INCO | Source incoherence | Backend | Construction | US-CON-012 | RefinementLock VO added to Construction DDD model + Ubiquitous Language | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | -| 30 | 🟢 RESOLVED | [COH-201](#detail-coh-201) | GAP | Missing capability / corrective gap | Backend | Design | US-DES-001 | BR-002 enforcement: US-CON-002 rejects linking tasks to DRAFT Blueprint | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | -| 31 | 🟢 RESOLVED | [COH-203](#detail-coh-203) | GAP | Missing capability / corrective gap | Backend | Design | US-DES-011 | DataSchema story created — full CRUD + Core validation for DDD DataSchema AR | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | -| 32 | 🟢 RESOLVED | [COH-204](#detail-coh-204) | GAP | Missing capability / corrective gap | Backend | Design | US-DES-002 | Visual contract designer scenario added to Gherkin + NFRs | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | -| 33 | 🟢 RESOLVED | [COH-205](#detail-coh-205) | INCO | Source incoherence | Backend | Design | US-DES-006 | @evolith/integration-fabric added to dependencies + bounded context | Resolved; evidence captured in the description. | 🟠 HIGH | 🟢 LOW | -| 34 | 🟢 RESOLVED | [COH-207](#detail-coh-207) | INCO | Source incoherence | Backend | Design | US-DES-007 | VersionEntry VO added to Design DDD model + TechnicalContract.versionHistory | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | -| 35 | 🟢 RESOLVED | [COH-101](#detail-coh-101) | GAP | Missing capability / corrective gap | Backend | Discovery | US-DIS-014 | Discovery Canvas Builder created — guided form enforcing ROI, KPIs, risks | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | -| 36 | 🟢 RESOLVED | [COH-102](#detail-coh-102) | GAP | Missing capability / corrective gap | Backend | Discovery | US-DIS-013 | Point estimate updated from 5→13 to reflect merge engine complexity | Resolved; evidence captured in the description. | 🟠 HIGH | 🟢 LOW | -| 37 | 🟢 RESOLVED | [COH-106](#detail-coh-106) | GAP | Missing capability / corrective gap | Backend | Discovery | US-DIS-003 | Edge cases (checklist blocking, state guard, Architect estimation, resubmission) confirmed present | Resolved; evidence captured in the description. | 🟠 HIGH | 🟢 LOW | -| 38 | 🟢 RESOLVED | [COH-202](#detail-coh-202) | GAP | Missing capability / corrective gap | Backend | Governance | AGENTS.md | AGENTS.md §23 already requires RequirementChecklist injection by WorkflowEngine | Resolved; evidence captured in the description. | 🟠 HIGH | 🟢 LOW | -| 39 | 🟢 RESOLVED | [COH-600](#detail-coh-600) | GAP | Missing capability / corrective gap | Backend | Governance | US-GOV-010 | Approval chain config story created — all 5 flow types (simple/seq/parallel/hierarchical/mixed) | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | -| 40 | 🟢 RESOLVED | [COH-603](#detail-coh-603) | INCO | Source incoherence | Backend | Integration | US-INT-004 | StatusMappingACL added; direct Jira→Evolith status mapping prevented | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | -| 41 | 🟢 RESOLVED | [COH-602](#detail-coh-602) | INCO | Source incoherence | Backend | Metrics | US-MET-003 | DriftAlertEvent removed: Metrics consumes DriftDetectedEvent (Conformist); warning-only | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | -| 42 | 🟢 RESOLVED | [COH-403](#detail-coh-403) | GAP | Missing capability / corrective gap | Backend | QA | US-QA-002 | Automatic .harness trigger scenario added on Construction DONE | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | -| 43 | 🟢 RESOLVED | [COH-404](#detail-coh-404) | GAP | Missing capability / corrective gap | Backend | QA | US-QA-003 | CFR cold-start scenario: insufficient data message + gate blocked | Resolved; evidence captured in the description. | 🟠 HIGH | 🟢 LOW | -| 44 | 🟢 RESOLVED | [COH-405](#detail-coh-405) | GAP | Missing capability / corrective gap | Backend | QA | US-QA-004 | Root Cleanliness added to QA gate conditions (US-QA-007 violations block gate) | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | -| 45 | 🟢 RESOLVED | [COH-406](#detail-coh-406) | GAP | Missing capability / corrective gap | Backend | QA | US-QA-005 | Coverage gate enforcement scenario (below 60% blocks advancement) | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | -| 46 | 🟢 RESOLVED | [COH-407](#detail-coh-407) | GAP | Missing capability / corrective gap | Backend | QA | US-QA-010 | ArtifactInstance Core schema validation on QA Report export | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | -| 47 | 🟢 RESOLVED | [COH-500](#detail-coh-500) | INCO | Source incoherence | Backend | Release | US-REL-003 | State naming: RE-DO_SCHEDULED→Replanned, events realigned | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | -| 48 | 🟢 RESOLVED | [COH-501](#detail-coh-501) | GAP | Missing capability / corrective gap | Backend | Release | US-REL-001 | QA gate validation: rejection scenario for non-passed gate prevents Release creation | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | -| 49 | 🟢 RESOLVED | [COH-502/503](#detail-coh-502-503) | GAP | Missing capability / corrective gap | Backend | Release | US-REL-008 | Human authorization + DeploymentRecord status transition on rollback | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | -| 50 | 🟢 RESOLVED | [COH-504](#detail-coh-504) | GAP | Missing capability / corrective gap | Backend | Release | US-REL-009 | Agent deployment execution + report_deployment_status MCP tools | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | -| 51 | 🟢 RESOLVED | [COH-700](#detail-coh-700) | GAP | Missing capability / corrective gap | CLI | CLI | US-CLI-008 | 4 missing CLI commands added: list, reassign, unassign, mode set | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | -| 52 | 🟢 RESOLVED | [COH-704](#detail-coh-704) | GAP | Missing capability / corrective gap | CLI | CLI | US-CLI-004 | 3 missing Construction commands added: cycle start, review submit, drift get | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | -| 53 | 🟢 RESOLVED | [COH-705](#detail-coh-705) | GAP | Missing capability / corrective gap | CLI | CLI | US-CLI-007 | Gate list command added; evaluate/blockers/exception still unresolved | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | -| 54 | 🟢 RESOLVED | [COH-706](#detail-coh-706) | GAP | Missing capability / corrective gap | CLI | CLI | US-CLI-002 | 2 missing Discovery commands added: initiative init, initiative list | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | -| 55 | 🟢 RESOLVED | [GAP-009](#detail-gap-009) | GAP | Missing capability / corrective gap | CLI | CLI | N/A | BMAD Agent Assignment API Endpoints Missing | Created `reference/specs/design/tracker-agent-assignment-api.md` | 🟠 HIGH | 🟡 MEDIUM | -| 56 | 🟢 RESOLVED | [GAP-005](#detail-gap-005) | GAP | Missing capability / corrective gap | Docs | Docs | N/A | Roadmap subestima 45 puntos (16%) | Corregido: 101 stories/325 pts, Phase 0→M(2w), ~18.5w, R-16 registrado | 🟠 HIGH | 🟢 LOW | -| 57 | 🟢 RESOLVED | [COH-601](#detail-coh-601) | GAP | Missing capability / corrective gap | Infra | Infra | US-INF-009 | Audit schema lifecycle story created — tracker_audit bootstrap, append-only trigger, RLS | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | -| 58 | 🟢 RESOLVED | [GAP-002](#detail-gap-002) | GAP | Missing capability / corrective gap | Infra | Infra | N/A | PostgreSQL Schema Names Inconsistent Across Documents | Schema naming `tracker_` adopted | 🟠 HIGH | 🟢 LOW | -| 59 | 🟢 RESOLVED | [GAP-003](#detail-gap-003) | GAP | Missing capability / corrective gap | Infra | Infra | N/A | GraphQL API Status Undefined | REST + OpenAPI 3.0 only in Phase 1 | 🟠 HIGH | 🟢 LOW | -| 60 | 🟢 RESOLVED | [GAP-006](#detail-gap-006) | GAP | Missing capability / corrective gap | Docs | Docs | N/A | Subestimación de puntos no registrada en Risk Register | R-16 añadido a `tracker-risk-register.md` con mitigación y owner | 🟡 MEDIUM | 🟢 LOW | -| 61 | 🟢 RESOLVED | [GAP-007](#detail-gap-007) | GAP | Missing capability / corrective gap | Docs | Docs | N/A | CLI/MCP interbloqueo de fases con feature parity (BR-008) | Roadmap reestructurado: CLI Foundation en Phase 1, CLI distribuido Phase 2-7 | 🟡 MEDIUM | 🔴 HIGH | -| 62 | 🟢 RESOLVED | [COH-821](#detail-coh-821) | INCO | Source incoherence | Backend | Artifacts | US-ART-003 | EvidenceRecord links via ArtifactInstance→PhaseGateState chain. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 63 | 🟢 RESOLVED | [COH-907](#detail-coh-907) | GAP | Missing capability / corrective gap | Backend | Artifacts | N/A | EvidenceChain visualization story created (US-ART-004) — chain traversal + PDF export. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 64 | 🟢 RESOLVED | [COH-808](#detail-coh-808) | GAP | Missing capability / corrective gap | Backend | Construction | All CON | Functional-scope.md references verified — no broken links remain. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 65 | 🟢 RESOLVED | [COH-806](#detail-coh-806) | INCO | Source incoherence | Backend | Design | US-DES-009,010 | C4 Generator + STRIDE Analyzer added to Design DDD ubiquitous language. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 66 | 🟢 RESOLVED | [COH-807](#detail-coh-807) | GAP | Missing capability / corrective gap | Backend | Design | All DES | Tenant scoping added to US-DES-001 (entry point), inherited by remaining Design stories. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 67 | 🟢 RESOLVED | [COH-800](#detail-coh-800) | INCO | Source incoherence | Backend | Discovery | US-DIS-006..013 | All Discovery stories now have Feature:/Scenario: blocks. DIS-006 already had them; DIS-007..013 wrapped. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 68 | 🟢 RESOLVED | [COH-801](#detail-coh-801) | GAP | Missing capability / corrective gap | Backend | Discovery | US-DIS-006..013 | MCP execution scenarios added to all 7 stories (DIS-006 already had MCP parity). | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 69 | 🟢 RESOLVED | [COH-802](#detail-coh-802) | INCO | Source incoherence | Backend | Discovery | US-DIS-007 | IN_REFINEMENT refinement status defined in Discovery DDD §1. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 70 | 🟢 RESOLVED | [COH-803](#detail-coh-803) | OPP | Improvement opportunity | Backend | Discovery | US-DIS-005 | Scope→phase mapping made tenant-configurable via TenantConfigShell. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 71 | 🟢 RESOLVED | [COH-804](#detail-coh-804) | INCO | Source incoherence | Backend | Discovery | US-DIS-001 | Template field mapping: roiRationale→estimatedRoi fixed in US-DIS-001. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 72 | 🟢 RESOLVED | [COH-805](#detail-coh-805) | INCO | Source incoherence | Backend | Discovery | US-DIS-002,004 | Point delta acknowledged: BusinessCase (external inputs) = 5 vs TJ (internal) = 3. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 73 | 🟢 RESOLVED | [COH-900](#detail-coh-900) | GAP | Missing capability / corrective gap | Backend | Discovery | US-DIS-012 | Trailing template line removed. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 74 | 🟢 RESOLVED | [COH-901](#detail-coh-901) | GAP | Missing capability / corrective gap | Backend | Discovery | US-DIS-011 | Fixed: missing closing `**` after EPIC-005. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 75 | 🟢 RESOLVED | [COH-902](#detail-coh-902) | OPP | Improvement opportunity | Backend | Discovery | US-DIS-001 | Downstream scenario noted for Phase 1 refactoring. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 76 | 🟢 RESOLVED | [COH-816](#detail-coh-816) | GAP | Missing capability / corrective gap | Backend | Governance | US-GOV-009 | Agent framework selection (bmad/spec-kit/custom) + FrameworkChangedEvent. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 77 | 🟢 RESOLVED | [COH-817](#detail-coh-817) | GAP | Missing capability / corrective gap | Backend | Governance | US-GOV-001 | SatelliteProduct lifecycle: archive(), PENDING_REVALIDATION, status transitions. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 78 | 🟢 RESOLVED | [COH-909](#detail-coh-909) | GAP | Missing capability / corrective gap | Backend | Governance | N/A | Governance 5-gate demo story created (US-GOV-011) — end-to-end gate command trace. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 79 | 🟢 RESOLVED | [COH-822](#detail-coh-822) | INCO | Source incoherence | Backend | Infra | US-INF-008 | Audit/telemetry distinction: permanent (BR-009) vs rotatable logs. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 80 | 🟢 RESOLVED | [COH-818](#detail-coh-818) | GAP | Missing capability / corrective gap | Backend | Integration | US-INT-007 | Health dashboard checks Core, UMS, GitHub, .harness, Jira — all 5 integrations. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 81 | 🟢 RESOLVED | [COH-819](#detail-coh-819) | INCO | Source incoherence | Backend | Integration | US-INT-008 | Gate advancement routed through Governance (AdvanceGateCommand). | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 82 | 🟢 RESOLVED | [COH-820](#detail-coh-820) | GAP | Missing capability / corrective gap | Backend | Metrics | N/A | SPACE metrics story created (US-MET-006) with all 5 SPACE dimensions. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 83 | 🟢 RESOLVED | [COH-809](#detail-coh-809) | INCO | Source incoherence | Backend | QA | US-QA-003,004,008 | TestCycle Aggregate Root referenced in all QA stories + caps fixed in QA-008 Gherkin. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 84 | 🟢 RESOLVED | [COH-810](#detail-coh-810) | GAP | Missing capability / corrective gap | Backend | QA | US-QA-006 | Human authorization scenario added: gate blocks until QA Engineer approves. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 85 | 🟢 RESOLVED | [COH-811](#detail-coh-811) | INCO | Source incoherence | Backend | QA | US-QA-008 | CFR displayed as aggregate ratio across all TestCycles, not per-cycle field. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 86 | 🟢 RESOLVED | [COH-903](#detail-coh-903) | INCO | Source incoherence | Backend | QA | US-QA-004 | Persona clarified: QA Engineer runs tests, Release Manager approves gate. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 87 | 🟢 RESOLVED | [COH-904](#detail-coh-904) | GAP | Missing capability / corrective gap | Backend | QA | US-QA-002 | .harness execution is async with callback. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 88 | 🟢 RESOLVED | [COH-812](#detail-coh-812) | GAP | Missing capability / corrective gap | Backend | Release | US-REL-003 | ReDoCycle AR listed in dependencies + persistent audit trail noted. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 89 | 🟢 RESOLVED | [COH-813](#detail-coh-813) | GAP | Missing capability / corrective gap | Backend | Release | US-REL-001 | Calendar collision detection scenario with warning on same date/environment. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 90 | 🟢 RESOLVED | [COH-814](#detail-coh-814) | GAP | Missing capability / corrective gap | Backend | Release | US-REL-006 | SPACE Survey Service story created (US-REL-010) — periodic survey trigger + webhook ingestion. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 91 | 🟢 RESOLVED | [COH-815](#detail-coh-815) | GAP | Missing capability / corrective gap | Backend | Release | US-REL-004 | Authorization-time re-validation scenario + GateConditionChangedEvent. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 92 | 🟢 RESOLVED | [COH-905](#detail-coh-905) | INCO | Source incoherence | Backend | Release | US-REL-001 | DDD terminology: ReleasePackage aggregate name consistent. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 93 | 🟢 RESOLVED | [COH-906](#detail-coh-906) | GAP | Missing capability / corrective gap | Backend | Release | US-REL-004 | Permission check documented in dependencies. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 94 | 🟢 RESOLVED | [COH-914](#detail-coh-914) | GAP | Missing capability / corrective gap | Backend | Release | US-REL-005 | DORA dashboard threshold noted for Phase 1 statistical review. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 95 | 🟢 RESOLVED | [COH-823](#detail-coh-823) | INCO | Source incoherence | CLI | CLI | Global | CLI README: 11 stories · 37 pts matching actual files. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 96 | 🟢 RESOLVED | [COH-824](#detail-coh-824) | INCO | Source incoherence | CLI | CLI | Global | MCP Tool Suite duplication resolved (US-CLI-010 Phase 5, US-CLI-011 Phase 7). | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 97 | 🟢 RESOLVED | [COH-910](#detail-coh-910) | INCO | Source incoherence | CLI | CLI | US-CLI-001 | `--format=json` adopted across all CLI stories per Core ADR 0073. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 98 | 🟢 RESOLVED | [COH-911](#detail-coh-911) | INCO | Source incoherence | CLI | CLI | US-CLI-009 | Title aligned: "MCP Server Bootstrap" in both story and README. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 99 | 🟢 RESOLVED | [COH-912](#detail-coh-912) | INCO | Source incoherence | CLI | CLI | US-CLI-003 | Context flag `--initiative` standardized across CLI stories. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 100 | 🟢 RESOLVED | [COH-913](#detail-coh-913) | GAP | Missing capability / corrective gap | CLI | CLI | Global | Offline-aware CLI story created (US-CLI-012) — queue, sync, conflict resolution. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 101 | 🟢 RESOLVED | [GAP-001](#detail-gap-001) | GAP | Missing capability / corrective gap | Docs | Docs | N/A | README.es.md Missing | Created README.es.md | 🟢 LOW | 🟢 LOW | -| 102 | 🟢 RESOLVED | [GAP-012](#detail-gap-012) | Docs | Documentation gap | Docs | Docs | N/A | MASTER_INDEX.md Carece de Cabecera de Navegación Bilingüe | Added bilingual nav header to MASTER_INDEX.md | 🟢 LOW | 🟢 LOW | -| 103 | 🟢 RESOLVED | [GAP-014](#detail-gap-014) | Docs | Documentation gap | Docs | Docs | N/A | Harness ADR-0002 Applies to .NET Only | Added .NET scope note to ADR-0002 | 🟢 LOW | 🟢 LOW | -| 104 | 🟢 RESOLVED | [GAP-018](#detail-gap-018) | Docs | Documentation gap | Docs | Docs | N/A | TAD Internal Links Broken | Fixed TAD internal links | 🟢 LOW | 🟢 LOW | -| 105 | 🟢 RESOLVED | [GAP-024](#detail-gap-024) | Docs | Documentation gap | Docs | Docs | N/A | No Observability Dashboard or Alert Specification | Created `reference/specs/infrastructure/tracker-observability-spec.md` | 🟢 LOW | 🟢 LOW | -| 106 | 🟢 RESOLVED | [COH-908](#detail-coh-908) | GAP | Missing capability / corrective gap | Infra | Infra | N/A | Secrets management story created (US-INF-010) — Vault + Docker/Helm injection. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | -| 107 | 🟢 RESOLVED | [GAP-008](#detail-gap-008) | GAP | Missing capability / corrective gap | Infra | Infra | N/A | Transactional Outbox Uses Prisma in TypeORM Project | Fixed OutboxProcessor to use TypeORM | 🟢 LOW | 🟢 LOW | -| 108 | 🟢 RESOLVED | [GAP-004](#detail-gap-004) | GAP | Missing capability / corrective gap | API | N/A | N/A | 3 dependencias upstream bloqueadas (Core API, UMS JWKS, UMS Auth Graph) | Resolved via Defensive Isolation (Mocks). | 🔴 CRITICAL | 🔴 HIGH | +| 3 | 🟢 RESOLVED | [GAP-020](#detail-gap-020) | Docs | Documentation gap | Docs | Docs | N/A | Artifact Schema URLs from Core Missing | RESOLVED 2026-08-02. Of the four things the reopen asked for, two shipped and two are settled by decision. **Shipped:** the references are consumed as data (`CoreArtifactSchemaCatalog`), every artifact in `GET /api/phase-artifact-profiles` carries its `canonicalSchema` `$id`, the artifact-fields screen links it, and a test compares the code against `CORE_ARTIFACT_SCHEMAS.md` in both directions. **Withdrawn by product direction (user, 2026-08-02): validating artifact content against these schemas.** T-056 rules — content validation is the tenant's configuration and not engine code — so the Tracker offers the canonical shape and never enforces it. **Handed to GAP-004:** tenant-aware persistence or caching of the references. With validation withdrawn a cache has no consumer, and the meaningful version of «stop mirroring, start consuming» is syncing the catalog from the Core, which is exactly the `IPhaseArtifactProfileSource` seam GAP-004 owns and which is BLOCKED on the Core exposing it. Recorded as a handover rather than dropped, so the residue has an owner instead of evaporating. | 🟡 MEDIUM | 🟡 MEDIUM | +| 4 | 🟢 RESOLVED | [GAP-023](#detail-gap-023) | Docs | Documentation gap | Docs | Docs | N/A | Re-Do Flow Not Fully Designed | RESOLVED — stale row; the evidence was in the catalog and never reached this register. `tracker-gap-reference-catalog.md` closed it on 2026-07-20 with «YA HECHA» and named the artifact. Re-verified here rather than taken on trust: `reference/specs/design/tracker-redo-flow-design.md` is 254 lines with trigger conditions, the state model, the domain model inside the Release context, the recalculation algorithm, impact propagation, the human-authorization gate, domain events and a traceability table. Its §10 lists five scheduling decisions (RD-D1…RD-D5) explicitly registered as proposals awaiting PO ratification — that is a decision pending an owner, not a design that is missing. | 🟡 MEDIUM | 🟡 MEDIUM | +| 5 | 🟢 RESOLVED | [GAP-025](#detail-gap-025) | Docs | Documentation gap | Docs | Docs | N/A | Portal DDD incomplete — NARROWED 2026-08-01: the strategic-map half is DONE (`reference/specs/architecture/bounded-context-map.md` calls itself «the single, authoritative strategic map» of the 9 contexts, with integration patterns and cross-context events). What remains is the four support contexts. | RESOLVED — stale row, same shape. The catalog closed it on 2026-07-19; this register kept the narrowed half open. Verified directly: `bounded-context-map.md` §2 classifies all nine contexts and names the four supporting ones — Governance, Artifacts, Metrics, Integration — each linked to its own tactical model, and all ten `ddd-model.md` files exist on disk. Both halves of the row are satisfied. | 🟡 MEDIUM | 🟡 MEDIUM | +| 6 | 🟢 RESOLVED | [GAP-016](#detail-gap-016) | Docs | Documentation gap | Docs | Docs | N/A | Roadmap Has No Calendar Dates | RESOLVED — stale row. `reference/specs/design/tracker-implementation-roadmap.md` has carried `Document Status: SUPERSEDED — historical NestJS-era draft` since it was corrected, and the marker cites **this row by id**: «SUPERSEDED (GAP-016)». The roadmap planned a NestJS build that was executed in .NET, so «no calendar dates» is moot on a document that describes a plan already carried out under a different stack. The other board, `tracker-gap-tracking.md`, recorded this correctly; this register did not. | 🟡 MEDIUM | 🟡 MEDIUM | +| 7 | 🟢 RESOLVED | [COH-012](#detail-coh-012) | GAP | Missing capability / corrective gap | Backend | Discovery | US-DIS-006 | Gherkin covers only 2 of 4 CRUD operations (Create, Update). Delete and Read entirely missing. Zero edge cases. | RESOLVED — 9 scenarios added to `docs/design/discovery-functional-specs.md`, covering Create (type derivation for 0/1/2/7 products against `InitiativeScope.Derive`, the `Initiative.TenantRequired` guard, and `ConsolidateFrom` lineage), Read (own-tenant hit, and other-tenant read returning exactly what a non-existent id returns — the shape that stops the id being confirmed), and withdrawal. **The row's premise was partly wrong and is corrected rather than obeyed:** there is no Delete in this aggregate and there must not be. An initiative is superseded into another (`Supersede` → `consolidated`, BR-DIS-005) because its lineage is governance evidence. Writing a Delete scenario would have satisfied the row and described a system that does not exist. The COH-012 probe in `falsifiable-claims.json` is therefore withdrawn, with the reason recorded in that file: it had inherited the same false premise. | 🟢 | 🟢 | +| 8 | 🟢 RESOLVED | [GAP-011](#detail-gap-011) | Docs | Documentation gap | Docs | Docs | N/A | C4 Topology No English version | RESOLVED — the row was TRUE and had been mismeasured. `c4-macro-topology-phase1.md` existed, was labelled «English (this document)» and passed `check-bilingual-parity`, but 86 of its 87 non-empty lines were byte-identical to the Spanish file: only the navigation banner had been translated. It is now genuinely in English — prose, diagram descriptions and relationship labels — and its entry was removed from `untranslated-allowlist.json`, which drops from 9 declared to 7. Note for the record: the other board, `tracker-gap-tracking.md`, marked this DONE while the file was still Spanish. | 🟡 MEDIUM | 🟡 MEDIUM | +| 9 | 🟢 RESOLVED | [GAP-017](#detail-gap-017) | Docs | Documentation gap | Docs | Docs | N/A | Discovery Canvas Has No ES Version | RESOLVED — same defect and same correction as GAP-011. `DISCOVERY_CANVAS.md` was 23 of 24 non-empty lines identical to `DISCOVERY_CANVAS.es.md`; the English label was the only English in it. Now translated in full and removed from `untranslated-allowlist.json`. Both boards had this backwards on direction — one said the ES version was missing, the other said the EN one was — and what was actually missing was English content behind an English filename. | 🟡 MEDIUM | 🟡 MEDIUM | +| 10 | 🟢 RESOLVED | [COH-009](#detail-coh-009) | INCO | Source incoherence | Backend | Release | All REL | BR-003 conflated: product-brief = "no deploy without QA gate", but 5+ stories invoke as "human authorization required." Two rules sharing one ID. | RESOLVED — and the repository says so in the row's own words. The business-rule table in `evolith-tracker-crosscutting-diagram.md` now carries a `BR-010` row, *CFR Quality Threshold*, whose own description reads «escindida de BR-003 por COH-009; BR-003 es sólo la firma humana». The split this row asked for was made, credited to this row, and the row was never moved. Verified across the repository: every `BR-003` occurrence outside the audit tree means Human Sign-Off and nothing else, and the QA-gate half lives as `BR-010` — cited by `reference/specs/qa/` («no deployment is authorized without an approved QA verdict and CFR < 2%»), by the test strategy against `PhaseGateEvaluator`, and by the Re-Do flow design. Two rules, two ids. | 🟢 | 🟢 | +| 11 | 🟢 RESOLVED | [COH-016](#detail-coh-016) | INCO | Source incoherence | Backend | Release | All REL | Three gap surfaces share one id namespace and only two were kept in step; 5 of the 34 shared ids disagreed. | RESOLVED — found while closing COH-009 and the two translation rows, and recorded here because it explains all of them. This repository keeps THREE gap surfaces sharing one id namespace: this register, `tracker-gap-tracking.md` and `tracker-gap-reference-catalog.md`. `check-gap-registry.py` kept the last two in step and never looked at this one. Measured on 2026-08-01: 34 ids in common, and **5 of them contradicted each other** — COH-012, GAP-016, GAP-023 and GAP-025 closed on the board and open here, GAP-020 the reverse. Neither surface was the reliable one: the board wrongly claimed GAP-011 and GAP-017 done while both files were still Spanish, and this register wrongly kept three closed rows open. Fixed by extending the guard to compare the two vocabularies on the only thing both state unambiguously — closed or not — with six self-tests, three of which go red when the comparison is disabled. | 🟢 | 🟢 | +| 12 | 🟢 RESOLVED | [GAP-013](#detail-gap-013) | Docs | Documentation gap | Docs | Docs | N/A | 14 Technical Design Docs Lack ES Version | REFUTED and MEASURED 2026-08-01. The row says 14 technical design documents lack a Spanish version. `reference/specs/design/` holds **20** documents and **every one** has its `.es.md` — zero missing. Repository-wide, 19 `.md` files have no Spanish pair, and **9 of them are under `docs/audit/`**: audit reports, corpus triages and this register itself, which are working documents rather than product documentation. The other ten are READMEs and task notes (`robosoft/README.md`, `product/infra/helm/README.md`, `Tracker.ArchitectureTests/README.md`, `docs/tasks/*`). None is a technical design document. **A related defect DOES survive and is tracked elsewhere:** having the pair is not having the translation — `check-translation-language` found 9 documents whose `.md` is written in Spanish, which is what `GAP-011` and `GAP-017` are about. | 🟡 MEDIUM | 🟡 MEDIUM | +| 13 | 🟢 RESOLVED | [GAP-015](#detail-gap-015) | Docs | Documentation gap | Docs | Docs | N/A | DECISIONS.md Lacks Description of T-001 Technical Rationale | Resolved 2026-08-01 by writing `docs/adrs/T-001-nx-monorepo-orchestration.md` (+ `.es`). **The row was right and understated it:** the single line T-001 did carry was also WRONG. It said «npm workspaces con Nx», and no `package.json` in this repository declares a `workspaces` field — Nx orchestrates by PROJECT GRAPH (`project.json` plus the `@nx/vite`, `@nx/webpack`, `@nx/eslint` and `@nx/jest` inference plugins in `src/nx.json`). A reader would have looked for a `workspaces` array, not found one, and concluded the monorepo was misconfigured. The ADR records the reason that decided it — `tracker-api` is .NET, and npm workspaces links `node_modules` between npm packages, so it would have covered three projects of four and left the largest outside — and the DECISIONS entry is corrected in both languages. | 🟡 MEDIUM | 🟡 MEDIUM | +| 14 | 🟢 RESOLVED | [GAP-021](#detail-gap-021) | Docs | Documentation gap | Docs | Docs | N/A | Redis in Docker Compose Without Requirement | REFUTED TWICE against the repository 2026-08-01. **The premise is gone:** there is no `docker-compose` file in this repository at all, no Redis in the Helm charts under `product/infra/helm/` — which is the real deployment — and no Redis in application code. **And the requirement it says is missing was decided:** `T-026` («Redis solo para soporte operacional») is recorded in `AdrRegistryEndpoints`, stating «Redis is operational support only (cache/locks/jobs/idempotency); PostgreSQL is the system of record». The row asks for a requirement that exists, about a file that does not. | 🟢 LOW | 🟡 MEDIUM | +| 15 | 🟢 RESOLVED | [GAP-022](#detail-gap-022) | Docs | Documentation gap | Docs | Docs | N/A | SPACE Metrics Not Defined | REFUTED by `check-falsifiable-claims` 2026-08-01: `reference/specs/metrics/prd.md` carries `REQ-MET-03` — «Compute SPACE metrics (Satisfaction, Performance, Activity, Communication, Efficiency)» — with acceptance criteria naming all five scores plus trend, threshold and last-computed timestamp. The framework is defined; the row is stale. | 🟡 MEDIUM | 🟡 MEDIUM | +| 16 | 🟢 RESOLVED | [COH-008](#detail-coh-008) | GAP | Missing capability / corrective gap | Backend | Release | US-REL-004 | DeploymentRecord Aggregate Root NEVER created by any story. UC-005b ("records a DeploymentRecord") cannot be fulfilled. | REFUTED against the code 2026-08-01: the aggregate the row says was never created EXISTS, complete. `Tracker.Domain/Release/DeploymentRecord` ships `Start`, `Finish` and `RollBack`; it persists to `tracker_release.deployment_records`; three endpoints expose it in `ConstructionReleaseEndpoints` (`POST /`, `POST /{id}/finish`, `POST /{id}/rollback`); and `ConstructionReleaseTests` covers it. UC-005b («records a DeploymentRecord») is therefore fulfillable — the row describes a state of the repository that has not held for some time, and nobody moved it. | 🟡 | 🟡 | +| 17 | 🟢 RESOLVED | [COH-005](#detail-coh-005) | GAP | Missing capability / corrective gap | Infra | Infra | US-INF-002 | Creates 10 schemas but omits `tracker_audit`. Data design defines 11 schemas; audit trail (BR-009) backbone missing. | Resolved by SUPERSESSION 2026-08-01, and the row simply never moved: `T-047` (Accepted 2026-07-19) ratifies the consolidated four-schema topology, supersedes `T-028` (schema-per-context, 10 schemas) and **names COH-005 among the gaps it closes**. `tracker_audit` was never created ON PURPOSE — the audit aggregates live in `tracker_governance`, where they work: `audit_entries` is queried in production, `GT-603` typed its actor, and `GT-588` wired signed transparency statements on top of it. The data design says so itself: sections 3–12 are «the original 2026-06-07 TARGET design … kept for traceability only … read them as intent, never as a description of the database». Nothing was missing; a document and the code disagreed, and the ADR already decided which one wins. | 🟡 | 🟡 | +| 18 | 🟢 RESOLVED | [COH-002](#detail-coh-002) | GAP | Missing capability / corrective gap | Backend | Discovery | US-DIS-006,007 | Discovery refinement entity has no persisted `status` column. States DRAFT/IN_REFINEMENT/SPLIT referenced in specs cannot be persisted; DDD model also missing the status field. | Resolved / Obsolete: El proceso de partición y refinamiento queda fuera del alcance de Tracker; las iniciativas sólo entran cuando están listas. | 🟢 LOW | 🟢 LOW | +| 19 | 🟢 RESOLVED | [COH-004](#detail-coh-004) | INCO | Source incoherence | Backend | QA | US-QA-001..004,006,008,011 | "TestRun" used in 7 stories but NOT in DDD model. DDD defines TestCycle (container) + TestExecution (atomic). TestCycle Aggregate Root never used by any story. | Resolved: TestCycle/TestExecution es el estándar canónico oficial; TestRun se depreca por ambiguo. Glosario actualizado. Historias asumen TestCycle. | 🔴 | 🔴 | +| 20 | 🟢 RESOLVED | [GAP-019](#detail-gap-019) | Docs | Documentation gap | Docs | Docs | N/A | Discovery requirements not broken down into implementable detail | Resolved: Se creó `docs/design/discovery-functional-specs.md` extrayendo las reglas de negocio, máquina de estados y cadenas de aprobación directamente del modelo DDD (Initiative.cs). | 🔴 HIGH | 🟡 MEDIUM | +| 21 | 🟢 RESOLVED | [GAP-010](#detail-gap-010) | Docs | Documentation gap | Docs | Docs | N/A | PRODUCT_VISION.md No English version | Resolved: PRODUCT_VISION.md ya se encontraba traducido y actualizado en inglés. Registro obsoleto. | 🟢 HIGH | 🟡 MEDIUM | +| 22 | 🟢 RESOLVED | [COH-010](#detail-coh-010) | INCO | Source incoherence | Backend | Construction | US-CON-008 | DDD defines `markAsDone()` but no `reopen()`/`revertStatus()`. Yet story allows DONE→IN_REVIEW regression. Contract breach between spec and domain model. | Resolved: Falsa alarma. La regresión real operaba en PhaseProgression y es estrictamente monótona. | 🟡 | 🟡 | +| 23 | 🟢 RESOLVED | [COH-001](#detail-coh-001) | INCO | Source incoherence | Backend | Discovery | US-DIS-002..005,011 | Status naming: `CANVAS_SUBMITTED` vs DB `submitted`. InitiativeStatus enum undefined in DDD. `under_review` in DB but zero specs. | Resolved: El desajuste se arregló previamente (2026-07-20) extrayendo InitiativeStatus como constantes y aplicando CHECK constraint. | 🟡 | 🟡 | +| 24 | 🟢 RESOLVED | [COH-003](#detail-coh-003) | GAP | Missing capability / corrective gap | Backend | Discovery | US-DIS-006 | Violates Small Aggregates pattern: nests child records inside a parent aggregate instead of referencing them by UUID. AGENTS.md mandates UUID refs only. | Resolved: No verificable (la historia US-DIS-006 no existe). El código actual SÍ utiliza referencias UUID correctamente. | 🟡 | 🟡 | +| 25 | 🟢 RESOLVED | [COH-011](#detail-coh-011) | INCO | Source incoherence | Backend | Discovery | US-DIS-003 | "ApprovalChain" aggregate referenced in Gherkin + Tech Reqs, but DDD model only defines `ApprovalGate` VO (0..1 cardinality). No ApprovalChain Aggregate Root exists. | Resolved: El código está bien (implementa ApprovalChain nativamente); el error era documental en una spec antigua. | 🟡 | 🟡 | +| 26 | 🟢 RESOLVED | [COH-006](#detail-coh-006) | GAP | Missing capability / corrective gap | CLI | CLI | US-CLI-010 | README says "MCP polling/sampling/agent SDK" but 0 of 6 MCP tools exist. | RESOLVED 2026-08-02, by fixing the DOCUMENTS and not by building tools. The row's own closure note claimed `tracker-gateway` exposes 6/6 Tracker MCP tools; it does not, and its controller says so in a comment: «The Core remains the single agent-facing MCP server; this is a client of it». The history explains both: the six tools were built (`c5f3a50`), rebound to the BFF (`293e3de`, T-051) and then DELETED (`614ddff`) when **T-052** made the Core's `evolith-mcp` the single agent-facing surface. So the finding was live again in its original form — docs promising an MCP surface that does not exist — with a different remedy. Aligned to T-052: PRD §5.3 (EN+ES) rewritten with where each capability is served now, and the local-dev guide (EN+ES) corrected, where the smoke command still sent readers to `POST /api/mcp/tracker_get_assignment`, a route that returns 404. | 🟡 | 🟡 | +| 27 | 🟢 RESOLVED | [COH-007](#detail-coh-007) | GAP | Missing capability / corrective gap | CLI | CLI | US-CLI-010 | PRD §5.3 defines 6 MCP tools; 0 implemented. BR-009 audit unenforceable via MCP. | RESOLVED 2026-08-02, same wave and same reason as COH-006. Four more documents still described the deleted surface — `ux-concept` (EN+ES), `blueprint` (EN+ES) and `tracker-agent-assignment-api` (EN+ES) — and each now carries a banner naming T-052, saying the `tracker_*` names are historical and pointing at `/api/core-mcp/*`. The text is kept rather than deleted: the capability each one describes is real and served by the `tracker-api` BFF; what disappeared was the transport. On BR-009: audit is not unenforceable, it is enforced on the BFF write path rather than through a Tracker-hosted MCP tool. | 🟡 | 🟡 | +| 28 | 🟢 RESOLVED | [COH-300](#detail-coh-300) | GAP | Missing capability / corrective gap | Backend | Construction | US-CON-008 | Architecture Drift blocks DONE transition scenario already present | Resolved; evidence captured in the description. | 🟠 HIGH | 🟢 LOW | +| 29 | 🟢 RESOLVED | [COH-304](#detail-coh-304) | GAP | Missing capability / corrective gap | Backend | Construction | US-CON-005 | Shell compliance fixed: WFE/IntegrationFabric/TenantConfig injected; seq diagram updated | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | +| 30 | 🟢 RESOLVED | [COH-305](#detail-coh-305) | INCO | Source incoherence | Backend | Construction | US-CON-012 | RefinementLock VO added to Construction DDD model + Ubiquitous Language | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | +| 31 | 🟢 RESOLVED | [COH-201](#detail-coh-201) | GAP | Missing capability / corrective gap | Backend | Design | US-DES-001 | BR-002 enforcement: US-CON-002 rejects linking tasks to DRAFT Blueprint | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | +| 32 | 🟢 RESOLVED | [COH-203](#detail-coh-203) | GAP | Missing capability / corrective gap | Backend | Design | US-DES-011 | DataSchema story created — full CRUD + Core validation for DDD DataSchema AR | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | +| 33 | 🟢 RESOLVED | [COH-204](#detail-coh-204) | GAP | Missing capability / corrective gap | Backend | Design | US-DES-002 | Visual contract designer scenario added to Gherkin + NFRs | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | +| 34 | 🟢 RESOLVED | [COH-205](#detail-coh-205) | INCO | Source incoherence | Backend | Design | US-DES-006 | @evolith/integration-fabric added to dependencies + bounded context | Resolved; evidence captured in the description. | 🟠 HIGH | 🟢 LOW | +| 35 | 🟢 RESOLVED | [COH-207](#detail-coh-207) | INCO | Source incoherence | Backend | Design | US-DES-007 | VersionEntry VO added to Design DDD model + TechnicalContract.versionHistory | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | +| 36 | 🟢 RESOLVED | [COH-101](#detail-coh-101) | GAP | Missing capability / corrective gap | Backend | Discovery | US-DIS-014 | Discovery Canvas Builder created — guided form enforcing ROI, KPIs, risks | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | +| 37 | 🟢 RESOLVED | [COH-102](#detail-coh-102) | GAP | Missing capability / corrective gap | Backend | Discovery | US-DIS-013 | Point estimate updated from 5→13 to reflect merge engine complexity | Resolved; evidence captured in the description. | 🟠 HIGH | 🟢 LOW | +| 38 | 🟢 RESOLVED | [COH-106](#detail-coh-106) | GAP | Missing capability / corrective gap | Backend | Discovery | US-DIS-003 | Edge cases (checklist blocking, state guard, Architect estimation, resubmission) confirmed present | Resolved; evidence captured in the description. | 🟠 HIGH | 🟢 LOW | +| 39 | 🟢 RESOLVED | [COH-202](#detail-coh-202) | GAP | Missing capability / corrective gap | Backend | Governance | AGENTS.md | AGENTS.md §23 already requires RequirementChecklist injection by WorkflowEngine | Resolved; evidence captured in the description. | 🟠 HIGH | 🟢 LOW | +| 40 | 🟢 RESOLVED | [COH-600](#detail-coh-600) | GAP | Missing capability / corrective gap | Backend | Governance | US-GOV-010 | Approval chain config story created — all 5 flow types (simple/seq/parallel/hierarchical/mixed) | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | +| 41 | 🟢 RESOLVED | [COH-603](#detail-coh-603) | INCO | Source incoherence | Backend | Integration | US-INT-004 | StatusMappingACL added; direct Jira→Evolith status mapping prevented | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | +| 42 | 🟢 RESOLVED | [COH-602](#detail-coh-602) | INCO | Source incoherence | Backend | Metrics | US-MET-003 | DriftAlertEvent removed: Metrics consumes DriftDetectedEvent (Conformist); warning-only | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | +| 43 | 🟢 RESOLVED | [COH-403](#detail-coh-403) | GAP | Missing capability / corrective gap | Backend | QA | US-QA-002 | Automatic .harness trigger scenario added on Construction DONE | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | +| 44 | 🟢 RESOLVED | [COH-404](#detail-coh-404) | GAP | Missing capability / corrective gap | Backend | QA | US-QA-003 | CFR cold-start scenario: insufficient data message + gate blocked | Resolved; evidence captured in the description. | 🟠 HIGH | 🟢 LOW | +| 45 | 🟢 RESOLVED | [COH-405](#detail-coh-405) | GAP | Missing capability / corrective gap | Backend | QA | US-QA-004 | Root Cleanliness added to QA gate conditions (US-QA-007 violations block gate) | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | +| 46 | 🟢 RESOLVED | [COH-406](#detail-coh-406) | GAP | Missing capability / corrective gap | Backend | QA | US-QA-005 | Coverage gate enforcement scenario (below 60% blocks advancement) | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | +| 47 | 🟢 RESOLVED | [COH-407](#detail-coh-407) | GAP | Missing capability / corrective gap | Backend | QA | US-QA-010 | ArtifactInstance Core schema validation on QA Report export | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | +| 48 | 🟢 RESOLVED | [COH-500](#detail-coh-500) | INCO | Source incoherence | Backend | Release | US-REL-003 | State naming: RE-DO_SCHEDULED→Replanned, events realigned | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | +| 49 | 🟢 RESOLVED | [COH-501](#detail-coh-501) | GAP | Missing capability / corrective gap | Backend | Release | US-REL-001 | QA gate validation: rejection scenario for non-passed gate prevents Release creation | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | +| 50 | 🟢 RESOLVED | [COH-502/503](#detail-coh-502-503) | GAP | Missing capability / corrective gap | Backend | Release | US-REL-008 | Human authorization + DeploymentRecord status transition on rollback | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | +| 51 | 🟢 RESOLVED | [COH-504](#detail-coh-504) | GAP | Missing capability / corrective gap | Backend | Release | US-REL-009 | Agent deployment execution + report_deployment_status MCP tools | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | +| 52 | 🟢 RESOLVED | [COH-700](#detail-coh-700) | GAP | Missing capability / corrective gap | CLI | CLI | US-CLI-008 | 4 missing CLI commands added: list, reassign, unassign, mode set | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | +| 53 | 🟢 RESOLVED | [COH-704](#detail-coh-704) | GAP | Missing capability / corrective gap | CLI | CLI | US-CLI-004 | 3 missing Construction commands added: cycle start, review submit, drift get | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | +| 54 | 🟢 RESOLVED | [COH-705](#detail-coh-705) | GAP | Missing capability / corrective gap | CLI | CLI | US-CLI-007 | Gate list command added; evaluate/blockers/exception still unresolved | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | +| 55 | 🟢 RESOLVED | [COH-706](#detail-coh-706) | GAP | Missing capability / corrective gap | CLI | CLI | US-CLI-002 | 2 missing Discovery commands added: initiative init, initiative list | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | +| 56 | 🟢 RESOLVED | [GAP-009](#detail-gap-009) | GAP | Missing capability / corrective gap | CLI | CLI | N/A | BMAD Agent Assignment API Endpoints Missing | Created `reference/specs/design/tracker-agent-assignment-api.md` | 🟠 HIGH | 🟡 MEDIUM | +| 57 | 🟢 RESOLVED | [GAP-005](#detail-gap-005) | GAP | Missing capability / corrective gap | Docs | Docs | N/A | Roadmap subestima 45 puntos (16%) | Corregido: 101 stories/325 pts, Phase 0→M(2w), ~18.5w, R-16 registrado | 🟠 HIGH | 🟢 LOW | +| 58 | 🟢 RESOLVED | [COH-601](#detail-coh-601) | GAP | Missing capability / corrective gap | Infra | Infra | US-INF-009 | Audit schema lifecycle story created — tracker_audit bootstrap, append-only trigger, RLS | Resolved; evidence captured in the description. | 🟠 HIGH | 🟡 MEDIUM | +| 59 | 🟢 RESOLVED | [GAP-002](#detail-gap-002) | GAP | Missing capability / corrective gap | Infra | Infra | N/A | PostgreSQL Schema Names Inconsistent Across Documents | Schema naming `tracker_` adopted | 🟠 HIGH | 🟢 LOW | +| 60 | 🟢 RESOLVED | [GAP-003](#detail-gap-003) | GAP | Missing capability / corrective gap | Infra | Infra | N/A | GraphQL API Status Undefined | REST + OpenAPI 3.0 only in Phase 1 | 🟠 HIGH | 🟢 LOW | +| 61 | 🟢 RESOLVED | [GAP-006](#detail-gap-006) | GAP | Missing capability / corrective gap | Docs | Docs | N/A | Subestimación de puntos no registrada en Risk Register | R-16 añadido a `tracker-risk-register.md` con mitigación y owner | 🟡 MEDIUM | 🟢 LOW | +| 62 | 🟢 RESOLVED | [GAP-007](#detail-gap-007) | GAP | Missing capability / corrective gap | Docs | Docs | N/A | CLI/MCP interbloqueo de fases con feature parity (BR-008) | Roadmap reestructurado: CLI Foundation en Phase 1, CLI distribuido Phase 2-7 | 🟡 MEDIUM | 🔴 HIGH | +| 63 | 🟢 RESOLVED | [COH-821](#detail-coh-821) | INCO | Source incoherence | Backend | Artifacts | US-ART-003 | EvidenceRecord links via ArtifactInstance→PhaseGateState chain. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 64 | 🟢 RESOLVED | [COH-907](#detail-coh-907) | GAP | Missing capability / corrective gap | Backend | Artifacts | N/A | EvidenceChain visualization story created (US-ART-004) — chain traversal + PDF export. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 65 | 🟢 RESOLVED | [COH-808](#detail-coh-808) | GAP | Missing capability / corrective gap | Backend | Construction | All CON | Functional-scope.md references verified — no broken links remain. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 66 | 🟢 RESOLVED | [COH-806](#detail-coh-806) | INCO | Source incoherence | Backend | Design | US-DES-009,010 | C4 Generator + STRIDE Analyzer added to Design DDD ubiquitous language. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 67 | 🟢 RESOLVED | [COH-807](#detail-coh-807) | GAP | Missing capability / corrective gap | Backend | Design | All DES | Tenant scoping added to US-DES-001 (entry point), inherited by remaining Design stories. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 68 | 🟢 RESOLVED | [COH-800](#detail-coh-800) | INCO | Source incoherence | Backend | Discovery | US-DIS-006..013 | All Discovery stories now have Feature:/Scenario: blocks. DIS-006 already had them; DIS-007..013 wrapped. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 69 | 🟢 RESOLVED | [COH-801](#detail-coh-801) | GAP | Missing capability / corrective gap | Backend | Discovery | US-DIS-006..013 | MCP execution scenarios added to all 7 stories (DIS-006 already had MCP parity). | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 70 | 🟢 RESOLVED | [COH-802](#detail-coh-802) | INCO | Source incoherence | Backend | Discovery | US-DIS-007 | IN_REFINEMENT refinement status defined in Discovery DDD §1. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 71 | 🟢 RESOLVED | [COH-803](#detail-coh-803) | OPP | Improvement opportunity | Backend | Discovery | US-DIS-005 | Scope→phase mapping made tenant-configurable via TenantConfigShell. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 72 | 🟢 RESOLVED | [COH-804](#detail-coh-804) | INCO | Source incoherence | Backend | Discovery | US-DIS-001 | Template field mapping: roiRationale→estimatedRoi fixed in US-DIS-001. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 73 | 🟢 RESOLVED | [COH-805](#detail-coh-805) | INCO | Source incoherence | Backend | Discovery | US-DIS-002,004 | Point delta acknowledged: BusinessCase (external inputs) = 5 vs TJ (internal) = 3. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 74 | 🟢 RESOLVED | [COH-900](#detail-coh-900) | GAP | Missing capability / corrective gap | Backend | Discovery | US-DIS-012 | Trailing template line removed. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 75 | 🟢 RESOLVED | [COH-901](#detail-coh-901) | GAP | Missing capability / corrective gap | Backend | Discovery | US-DIS-011 | Fixed: missing closing `**` after EPIC-005. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 76 | 🟢 RESOLVED | [COH-902](#detail-coh-902) | OPP | Improvement opportunity | Backend | Discovery | US-DIS-001 | Downstream scenario noted for Phase 1 refactoring. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 77 | 🟢 RESOLVED | [COH-816](#detail-coh-816) | GAP | Missing capability / corrective gap | Backend | Governance | US-GOV-009 | Agent framework selection (bmad/spec-kit/custom) + FrameworkChangedEvent. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 78 | 🟢 RESOLVED | [COH-817](#detail-coh-817) | GAP | Missing capability / corrective gap | Backend | Governance | US-GOV-001 | SatelliteProduct lifecycle: archive(), PENDING_REVALIDATION, status transitions. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 79 | 🟢 RESOLVED | [COH-909](#detail-coh-909) | GAP | Missing capability / corrective gap | Backend | Governance | N/A | Governance 5-gate demo story created (US-GOV-011) — end-to-end gate command trace. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 80 | 🟢 RESOLVED | [COH-822](#detail-coh-822) | INCO | Source incoherence | Backend | Infra | US-INF-008 | Audit/telemetry distinction: permanent (BR-009) vs rotatable logs. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 81 | 🟢 RESOLVED | [COH-818](#detail-coh-818) | GAP | Missing capability / corrective gap | Backend | Integration | US-INT-007 | Health dashboard checks Core, UMS, GitHub, .harness, Jira — all 5 integrations. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 82 | 🟢 RESOLVED | [COH-819](#detail-coh-819) | INCO | Source incoherence | Backend | Integration | US-INT-008 | Gate advancement routed through Governance (AdvanceGateCommand). | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 83 | 🟢 RESOLVED | [COH-820](#detail-coh-820) | GAP | Missing capability / corrective gap | Backend | Metrics | N/A | SPACE metrics story created (US-MET-006) with all 5 SPACE dimensions. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 84 | 🟢 RESOLVED | [COH-809](#detail-coh-809) | INCO | Source incoherence | Backend | QA | US-QA-003,004,008 | TestCycle Aggregate Root referenced in all QA stories + caps fixed in QA-008 Gherkin. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 85 | 🟢 RESOLVED | [COH-810](#detail-coh-810) | GAP | Missing capability / corrective gap | Backend | QA | US-QA-006 | Human authorization scenario added: gate blocks until QA Engineer approves. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 86 | 🟢 RESOLVED | [COH-811](#detail-coh-811) | INCO | Source incoherence | Backend | QA | US-QA-008 | CFR displayed as aggregate ratio across all TestCycles, not per-cycle field. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 87 | 🟢 RESOLVED | [COH-903](#detail-coh-903) | INCO | Source incoherence | Backend | QA | US-QA-004 | Persona clarified: QA Engineer runs tests, Release Manager approves gate. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 88 | 🟢 RESOLVED | [COH-904](#detail-coh-904) | GAP | Missing capability / corrective gap | Backend | QA | US-QA-002 | .harness execution is async with callback. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 89 | 🟢 RESOLVED | [COH-812](#detail-coh-812) | GAP | Missing capability / corrective gap | Backend | Release | US-REL-003 | ReDoCycle AR listed in dependencies + persistent audit trail noted. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 90 | 🟢 RESOLVED | [COH-813](#detail-coh-813) | GAP | Missing capability / corrective gap | Backend | Release | US-REL-001 | Calendar collision detection scenario with warning on same date/environment. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 91 | 🟢 RESOLVED | [COH-814](#detail-coh-814) | GAP | Missing capability / corrective gap | Backend | Release | US-REL-006 | SPACE Survey Service story created (US-REL-010) — periodic survey trigger + webhook ingestion. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 92 | 🟢 RESOLVED | [COH-815](#detail-coh-815) | GAP | Missing capability / corrective gap | Backend | Release | US-REL-004 | Authorization-time re-validation scenario + GateConditionChangedEvent. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 93 | 🟢 RESOLVED | [COH-905](#detail-coh-905) | INCO | Source incoherence | Backend | Release | US-REL-001 | DDD terminology: ReleasePackage aggregate name consistent. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 94 | 🟢 RESOLVED | [COH-906](#detail-coh-906) | GAP | Missing capability / corrective gap | Backend | Release | US-REL-004 | Permission check documented in dependencies. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 95 | 🟢 RESOLVED | [COH-914](#detail-coh-914) | GAP | Missing capability / corrective gap | Backend | Release | US-REL-005 | DORA dashboard threshold noted for Phase 1 statistical review. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 96 | 🟢 RESOLVED | [COH-823](#detail-coh-823) | INCO | Source incoherence | CLI | CLI | Global | CLI README: 11 stories · 37 pts matching actual files. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 97 | 🟢 RESOLVED | [COH-824](#detail-coh-824) | INCO | Source incoherence | CLI | CLI | Global | MCP Tool Suite duplication resolved (US-CLI-010 Phase 5, US-CLI-011 Phase 7). | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 98 | 🟢 RESOLVED | [COH-910](#detail-coh-910) | INCO | Source incoherence | CLI | CLI | US-CLI-001 | `--format=json` adopted across all CLI stories per Core ADR 0073. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 99 | 🟢 RESOLVED | [COH-911](#detail-coh-911) | INCO | Source incoherence | CLI | CLI | US-CLI-009 | Title aligned: "MCP Server Bootstrap" in both story and README. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 100 | 🟢 RESOLVED | [COH-912](#detail-coh-912) | INCO | Source incoherence | CLI | CLI | US-CLI-003 | Context flag `--initiative` standardized across CLI stories. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 101 | 🟢 RESOLVED | [COH-913](#detail-coh-913) | GAP | Missing capability / corrective gap | CLI | CLI | Global | Offline-aware CLI story created (US-CLI-012) — queue, sync, conflict resolution. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 102 | 🟢 RESOLVED | [GAP-001](#detail-gap-001) | GAP | Missing capability / corrective gap | Docs | Docs | N/A | README.es.md Missing | Created README.es.md | 🟢 LOW | 🟢 LOW | +| 103 | 🟢 RESOLVED | [GAP-012](#detail-gap-012) | Docs | Documentation gap | Docs | Docs | N/A | MASTER_INDEX.md Carece de Cabecera de Navegación Bilingüe | Added bilingual nav header to MASTER_INDEX.md | 🟢 LOW | 🟢 LOW | +| 104 | 🟢 RESOLVED | [GAP-014](#detail-gap-014) | Docs | Documentation gap | Docs | Docs | N/A | Harness ADR-0002 Applies to .NET Only | Added .NET scope note to ADR-0002 | 🟢 LOW | 🟢 LOW | +| 105 | 🟢 RESOLVED | [GAP-018](#detail-gap-018) | Docs | Documentation gap | Docs | Docs | N/A | TAD Internal Links Broken | Fixed TAD internal links | 🟢 LOW | 🟢 LOW | +| 106 | 🟢 RESOLVED | [GAP-024](#detail-gap-024) | Docs | Documentation gap | Docs | Docs | N/A | No Observability Dashboard or Alert Specification | Created `reference/specs/infrastructure/tracker-observability-spec.md` | 🟢 LOW | 🟢 LOW | +| 107 | 🟢 RESOLVED | [COH-908](#detail-coh-908) | GAP | Missing capability / corrective gap | Infra | Infra | N/A | Secrets management story created (US-INF-010) — Vault + Docker/Helm injection. | Resolved; evidence captured in the description. | 🟢 LOW | 🟢 LOW | +| 108 | 🟢 RESOLVED | [GAP-008](#detail-gap-008) | GAP | Missing capability / corrective gap | Infra | Infra | N/A | Transactional Outbox Uses Prisma in TypeORM Project | Fixed OutboxProcessor to use TypeORM | 🟢 LOW | 🟢 LOW | @@ -301,7 +301,7 @@ This document is the only operational gap register in this repository. The maste ### Detail COH-006 -- **Status:** 🔴 BLOCKED +- **Status:** 🟢 RESOLVED - **Type:** GAP (Missing capability / corrective gap) - **Component:** CLI - **Module:** CLI @@ -317,7 +317,7 @@ This document is the only operational gap register in this repository. The maste ### Detail COH-007 -- **Status:** 🔴 BLOCKED +- **Status:** 🟢 RESOLVED - **Type:** GAP (Missing capability / corrective gap) - **Component:** CLI - **Module:** CLI @@ -413,7 +413,7 @@ This document is the only operational gap register in this repository. The maste ### Detail GAP-020 -- **Status:** 🟡 OPEN +- **Status:** 🟢 RESOLVED - **Type:** Docs (Documentation gap) - **Component:** Docs - **Module:** Docs diff --git a/reference/specs/design/blueprint.es.md b/reference/specs/design/blueprint.es.md index 7c7e22e5..ef0dc08b 100644 --- a/reference/specs/design/blueprint.es.md +++ b/reference/specs/design/blueprint.es.md @@ -1,5 +1,14 @@ # Blueprint (inicial) — Evolith Tracker · Design +> [!NOTE] +> **Los nombres de tools de abajo son históricos (`T-052`, COH-006/COH-007).** Las seis tools MCP +> `tracker_*` se eliminaron cuando [`T-052`](../../../docs/adrs/T-052-gateway-consumes-core-single-mcp.es.md) +> convirtió el `evolith-mcp` del Core en la única superficie MCP de cara a agentes; el +> `tracker-gateway` la reexpone en `/api/core-mcp/*`. Las capacidades descritas son reales y las +> sirve el BFF `tracker-api`: lo que desapareció es el transporte. Se conserva el texto para que el +> requisito no se pierda. + + > Bilingüe: [English](./blueprint.md) Este contexto cumple un rol dual: es a la vez el **bounded context de Design** (dominio de la Compuerta 2) y el hogar de la **suite de diseño de la propia aplicación Tracker**. Este blueprint es un **índice y síntesis** conciso — la arquitectura técnica detallada ya vive en las specs `tracker-*.md` de este directorio y no se duplica aquí. diff --git a/reference/specs/design/blueprint.md b/reference/specs/design/blueprint.md index 3014b1bc..f04f6dd9 100644 --- a/reference/specs/design/blueprint.md +++ b/reference/specs/design/blueprint.md @@ -1,5 +1,13 @@ # Blueprint (initial) — Evolith Tracker · Design +> [!NOTE] +> **Tool names below are historical (`T-052`, COH-006/COH-007).** The six `tracker_*` MCP tools +> were deleted when [`T-052`](../../../docs/adrs/T-052-gateway-consumes-core-single-mcp.md) made the +> Core's `evolith-mcp` the single agent-facing MCP surface; the `tracker-gateway` re-exposes it at +> `/api/core-mcp/*`. The capabilities described here are real and served by the `tracker-api` BFF — +> only the transport named below is gone. Kept rather than deleted so the requirement survives. + + > Bilingual: [Español](./blueprint.es.md) This context carries a dual role: it is both the **Design bounded context** (Gate 2 domain) and the home of the **Tracker's own application design suite**. This blueprint is a concise **index and synthesis** — the detailed technical architecture already lives in the `tracker-*.md` specs in this directory and is not duplicated here. diff --git a/reference/specs/design/tracker-agent-assignment-api.es.md b/reference/specs/design/tracker-agent-assignment-api.es.md index 43716fcd..e1192529 100644 --- a/reference/specs/design/tracker-agent-assignment-api.es.md +++ b/reference/specs/design/tracker-agent-assignment-api.es.md @@ -2,6 +2,15 @@ > **Navegación bilingüe:** [English](./tracker-agent-assignment-api.md) · Español (este documento) +> [!NOTE] +> **Los nombres de tools de abajo son históricos (`T-052`, COH-006/COH-007).** Las seis tools MCP +> `tracker_*` se eliminaron cuando [`T-052`](../../../docs/adrs/T-052-gateway-consumes-core-single-mcp.es.md) +> convirtió el `evolith-mcp` del Core en la única superficie MCP de cara a agentes; el +> `tracker-gateway` la reexpone en `/api/core-mcp/*`. Las capacidades descritas son reales y las +> sirve el BFF `tracker-api`: lo que desapareció es el transporte. Se conserva el texto para que el +> requisito no se pierda. + + **Estado del Documento:** Borrador **Tipo:** Diseño de Contrato de API e Interacción (dentro del Bounded Context de Governance) **Satélite:** Evolith Tracker diff --git a/reference/specs/design/tracker-agent-assignment-api.md b/reference/specs/design/tracker-agent-assignment-api.md index f76566b0..ccff2ede 100644 --- a/reference/specs/design/tracker-agent-assignment-api.md +++ b/reference/specs/design/tracker-agent-assignment-api.md @@ -2,6 +2,14 @@ > **Bilingual Navigation:** English (this document) · [Versión en Español](./tracker-agent-assignment-api.es.md) +> [!NOTE] +> **Tool names below are historical (`T-052`, COH-006/COH-007).** The six `tracker_*` MCP tools +> were deleted when [`T-052`](../../../docs/adrs/T-052-gateway-consumes-core-single-mcp.md) made the +> Core's `evolith-mcp` the single agent-facing MCP surface; the `tracker-gateway` re-exposes it at +> `/api/core-mcp/*`. The capabilities described here are real and served by the `tracker-api` BFF — +> only the transport named below is gone. Kept rather than deleted so the requirement survives. + + **Document Status:** Draft **Type:** API & Interaction Contract Design (within the Governance Bounded Context) **Satellite:** Evolith Tracker