Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
f6fbdc3
docs(board): cerrar GAP-020 — el trabajo esta hecho y la fila seguia …
beyondnetPeru Aug 2, 2026
51954cd
Merge pull request #96 from beyondnetcode/docs/close-gap-020
beyondnetPeru Aug 2, 2026
758bdef
docs(board): COH-005 estaba resuelta por decision desde julio y la fi…
beyondnetPeru Aug 2, 2026
336dd57
Merge pull request #97 from beyondnetcode/docs/close-coh-005-v2
beyondnetPeru Aug 2, 2026
e04f618
docs(board): COH-008 esta refutada — el agregado que dice que no exis…
beyondnetPeru Aug 2, 2026
16addaf
feat(governance): re-comprobar contra el codigo las afirmaciones fals…
beyondnetPeru Aug 2, 2026
6dc9f9a
Merge pull request #98 from beyondnetcode/docs/close-coh-008
beyondnetPeru Aug 2, 2026
2fdd06d
docs(board): GAP-021 refutada dos veces — el fichero no existe y el r…
beyondnetPeru Aug 2, 2026
811f4ff
Merge pull request #100 from beyondnetcode/docs/close-gap-021
beyondnetPeru Aug 2, 2026
e1010c3
docs(adr): escribir el racional de T-001, y corregir que la unica lin…
beyondnetPeru Aug 2, 2026
e7ccefc
Merge pull request #101 from beyondnetcode/docs/t-001-rationale
beyondnetPeru Aug 2, 2026
5a3921c
feat(docs): el guard de paridad no ve el IDIOMA, y nueve documentos «…
beyondnetPeru Aug 2, 2026
499e970
Merge pull request #102 from beyondnetcode/feat/translation-language-…
beyondnetPeru Aug 2, 2026
80b2bf8
docs(board): GAP-013 refutada — los 20 disenos tecnicos tienen su ver…
beyondnetPeru Aug 2, 2026
a7f7bfe
Merge pull request #103 from beyondnetcode/docs/close-gap-013
beyondnetPeru Aug 2, 2026
a5f719c
docs(audit): close COH-009 — BR-003 conflation already split into BR-010
beyondnetPeru Aug 2, 2026
a714534
Merge pull request #104 from beyondnetcode/docs/close-coh-009
beyondnetPeru Aug 2, 2026
17adc22
docs(i18n): translate C4 topology and Discovery Canvas — close GAP-01…
beyondnetPeru Aug 2, 2026
8ff551c
Merge pull request #105 from beyondnetcode/docs/close-gap-011-017
beyondnetPeru Aug 2, 2026
5870fad
docs(discovery): cover Create/Read/Supersede in Gherkin — close COH-0…
beyondnetPeru Aug 2, 2026
3a74bcb
Merge pull request #106 from beyondnetcode/docs/close-coh-012-gap-016
beyondnetPeru Aug 2, 2026
f4a5dc7
chore(audit): contrast the third gap surface — reconcile GAP-020/023/…
beyondnetPeru Aug 2, 2026
f743ed4
Merge pull request #107 from beyondnetcode/docs/reconcile-gap-surfaces
beyondnetPeru Aug 2, 2026
3b336ab
feat(governance): consume the Core artifact schema references — close…
beyondnetPeru Aug 2, 2026
35446c3
docs(audit): GAP-020 stays open — two of the four asks are done, not …
beyondnetPeru Aug 2, 2026
67b78b8
Merge pull request #108 from beyondnetcode/feat/gap-020-consume-core-…
beyondnetPeru Aug 2, 2026
1f1b3fb
docs(mcp): align six documents to T-052 — close COH-006/COH-007, GAP-…
beyondnetPeru Aug 2, 2026
5053215
Merge pull request #109 from beyondnetcode/docs/align-mcp-surface-to-…
beyondnetPeru Aug 2, 2026
7b6c10e
docs(audit): scope GAP-004 blocker by blocker; Core half filed upstre…
beyondnetPeru Aug 2, 2026
c84784f
Merge pull request #110 from beyondnetcode/docs/scope-gap-004
beyondnetPeru Aug 2, 2026
e6f8866
feat(transparency): make the signing wire operable — GT-588 criterion 1
beyondnetPeru Aug 2, 2026
6bbf506
Merge pull request #111 from beyondnetcode/feat/gt-588-transparency-o…
beyondnetPeru Aug 2, 2026
aa97cc0
docs(audit): close OPP-002 — the AuditTrail shared kernel already exists
beyondnetPeru Aug 2, 2026
50e55a1
Merge pull request #112 from beyondnetcode/docs/close-opp-002
beyondnetPeru Aug 2, 2026
13e0382
feat(ci): publish the Tracker's images to GHCR — GT-435
beyondnetPeru Aug 2, 2026
7ec760e
Merge pull request #113 from beyondnetcode/feat/gt-435-tracker-image-cd
beyondnetPeru Aug 2, 2026
bbc2335
feat(ci): guarded Coolify deploy for the Tracker — GT-435
beyondnetPeru Aug 2, 2026
1252130
Merge pull request #114 from beyondnetcode/feat/gt-435-tracker-deploy…
beyondnetPeru Aug 2, 2026
7842812
feat(governance): per-tenant governance packages — GT-532
beyondnetPeru Aug 2, 2026
737e469
Merge pull request #115 from beyondnetcode/feat/gt-532-governance-pac…
beyondnetPeru Aug 2, 2026
7ddf014
docs(audit): GAP-004's Core half is unblocked — UMS remains
beyondnetPeru Aug 3, 2026
df34127
Merge pull request #116 from beyondnetcode/docs/gap-004-core-half-unb…
beyondnetPeru Aug 3, 2026
6bfe6a4
feat(governance): the core-sync artifact source — GAP-004's Core half…
beyondnetPeru Aug 3, 2026
36b28c1
Merge pull request #117 from beyondnetcode/feat/gap-004-core-sync-art…
beyondnetPeru Aug 3, 2026
204edaf
feat(sdlc): contrast the phase record against the Core catalogue
beyondnetPeru Aug 3, 2026
ede9d3d
chore: untrack .codex/, a local tool config committed by accident
beyondnetPeru Aug 3, 2026
ccc490a
Merge pull request #118 from beyondnetcode/feat/cp-02-core-catalog-co…
beyondnetPeru Aug 3, 2026
1ec585b
feat(integration): stop discarding the canonical EvaluationResult
beyondnetPeru Aug 3, 2026
ecaa132
Merge pull request #119 from beyondnetcode/feat/cp-05-preserve-canoni…
beyondnetPeru Aug 3, 2026
fe7907d
feat(ledger): a gateway-born row stops being born half empty
beyondnetPeru Aug 3, 2026
9c1124b
Merge pull request #120 from beyondnetcode/feat/cp-05-ledger-keeps-co…
beyondnetPeru Aug 3, 2026
cb48448
feat(governance): the tenant decides which Core signals block a phase
beyondnetPeru Aug 3, 2026
ca9727d
Merge pull request #121 from beyondnetcode/feat/cp-06-core-signal-matrix
beyondnetPeru Aug 3, 2026
3202a40
feat(integration): the context the Tracker sends stops being a minima…
beyondnetPeru Aug 3, 2026
9b355a2
Merge pull request #122 from beyondnetcode/feat/cp-04-typed-evaluatio…
beyondnetPeru Aug 3, 2026
56c3210
feat(integration): the phase package travels, and the server builds it
beyondnetPeru Aug 3, 2026
cfb4999
Merge pull request #123 from beyondnetcode/feat/cp-04-phase-package
beyondnetPeru Aug 3, 2026
a990af0
feat(integration): a Core deposit can hang off the SDLC record
beyondnetPeru Aug 3, 2026
2e05607
feat(governance): attached deposits run through the tenant's signal m…
beyondnetPeru Aug 3, 2026
294b3fd
Merge pull request #124 from beyondnetcode/feat/cp-07-attach-deposits
beyondnetPeru Aug 3, 2026
110ebe3
Merge pull request #125 from beyondnetcode/feat/cp-07-deposits-throug…
beyondnetPeru Aug 3, 2026
45a91aa
feat(governance): the tenant marks artifacts without touching the sta…
beyondnetPeru Aug 3, 2026
f69ac71
feat(sdlc): the initiative ledger, derived rather than stored
beyondnetPeru Aug 3, 2026
ba5725f
Merge pull request #126 from beyondnetcode/feat/cp-02-tenant-overlay
beyondnetPeru Aug 3, 2026
fa8cf3d
Merge pull request #127 from beyondnetcode/feat/cp-16-initiative-ledger
beyondnetPeru Aug 3, 2026
198a07e
feat(sdlc): artifact versions, with a history that cannot be rewritten
beyondnetPeru Aug 3, 2026
8aae6a3
Merge pull request #128 from beyondnetcode/feat/cp-14-artifact-versions
beyondnetPeru Aug 3, 2026
6ca7a82
feat(sdlc): approvals and evaluations point at a concrete version
beyondnetPeru Aug 3, 2026
17ede73
Merge pull request #129 from beyondnetcode/feat/cp-14-version-links
beyondnetPeru Aug 3, 2026
aca2b84
fix(scorecard): a required artifact nobody delivered stops being invi…
beyondnetPeru Aug 3, 2026
9338310
Merge pull request #130 from beyondnetcode/feat/cp-02-scorecard-catalog
beyondnetPeru Aug 3, 2026
361ccd3
test(robosoft): the same Core signal blocks, or does not, by tenant c…
beyondnetPeru Aug 3, 2026
05664b5
Merge pull request #131 from beyondnetcode/feat/cp-10-parity-robot
beyondnetPeru Aug 3, 2026
7bb20a9
docs(board): flip the rows whose criteria are all closed, and re-eval…
beyondnetPeru Aug 3, 2026
9ce0aa7
Merge pull request #132 from beyondnetcode/docs/board-status-reconcile
beyondnetPeru Aug 3, 2026
c408c5e
docs(robosoft): regenerate the robot roster — the parity robot makes …
beyondnetPeru Aug 3, 2026
64e9fe6
Merge pull request #134 from beyondnetcode/docs/robot-roster-14
beyondnetPeru Aug 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 31 additions & 13 deletions .bmad-core/deliverables/prd.es.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

---

Expand Down
42 changes: 30 additions & 12 deletions .bmad-core/deliverables/prd.md
Original file line number Diff line number Diff line change
Expand Up @@ -224,30 +224,48 @@ 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
3. **Submit a deliverable** — push an OpenAPI contract or ADR to the Tracker
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.

---

Expand Down
9 changes: 9 additions & 0 deletions .bmad-core/deliverables/ux-concept.es.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
8 changes: 8 additions & 0 deletions .bmad-core/deliverables/ux-concept.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
32 changes: 32 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -235,3 +235,35 @@ jobs:

- name: Board y catalogo deben contar lo mismo
run: python3 .harness/scripts/check-gap-registry.py

# GT-435 — hasta el 2026-08-02 este repositorio publicaba TRES Dockerfiles y CERO
# imagenes: ningun workflow los construia, mientras los charts referenciaban
# `evolith-tracker-api:0.0.1`, `...-web:0.0.1` y `evolith-tracker-gateway:local`, este
# ultimo un tag que ningun registro puede servir. El camino de despliegue no estaba sin
# probar: estaba sin cablear. Nada habia tirado nunca de esas imagenes, asi que ningun
# CI en verde podia revelarlo.
- name: Los charts piden imagenes que este repositorio produce
run: node .harness/scripts/check-deployable-images.mjs

# El paso anterior contrasta ademas el REGISTRO, la tercera superficie, anadida el
# 2026-08-01: board y catalogo llevaban sincronizados desde que existe el guard y
# nadie miraba el registro, que comparte el mismo espacio de ids. De los 34 ids
# comunes, CINCO se contradecian. Estas pruebas son negativas: comprueban que el
# contraste se pone rojo cuando debe, no que exista.
- name: Self-tests for the board/registro contrast
run: python3 .harness/scripts/check-gap-registry.test.py

# Las fichas del board recogen hallazgos de auditoria y nada las vuelve a
# contrastar con el codigo, asi que envejecen en silencio mientras siguen
# dirigiendo prioridades. El 2026-08-01 se encontraron CINCO reclamando trabajo ya
# hecho. Este guard re-comprueba las afirmaciones que una maquina puede falsar.
#
# No lee la prosa de las filas, a proposito: el `50-validate-gap-claim` del Core ya
# probo esa via, produjo nueve atribuciones falsas en un dia y enseno a los autores
# a borrar frases verdaderas. Aqui solo se comprueba lo que alguien escribio como
# DATO en `falsifiable-claims.json`.
- name: Board claims still hold against the code
run: node .harness/scripts/check-falsifiable-claims.mjs

- name: Self-tests for the falsifiable-claim guard
run: node --test .harness/scripts/check-falsifiable-claims.test.mjs
12 changes: 12 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,18 @@ jobs:
- name: Check bilingual parity
run: node .harness/scripts/check-bilingual-parity.mjs

# `check-bilingual-parity` compara que el par EXISTA y que las cabeceras cuadren.
# Ninguna de las dos cosas ve el IDIOMA, asi que un fichero copiado, reetiquetado
# «English (this document)» y dejado en castellano lo pasa — que es exactamente el
# estado que describen GAP-011 y GAP-017, y por eso ambas filas seguian siendo
# ciertas con la paridad en verde. Medido el 2026-08-01: 9 de 151, incluidos
# DECISIONS.md y MASTER_INDEX.md.
#
# Va como TRINQUETE: los nueve estan declarados con su motivo en
# `untranslated-allowlist.json`, asi que hoy pasa; el decimo falla.
- name: English-labelled documents actually read as English
run: node .harness/scripts/check-translation-language.mjs

- name: Validate root cleanliness
run: node .harness/scripts/validate-root-cleanliness.mjs

Expand Down
Loading
Loading