diff --git a/.codex/config.toml b/.codex/config.toml new file mode 100644 index 0000000..8b5006a --- /dev/null +++ b/.codex/config.toml @@ -0,0 +1,10 @@ +[mcp_servers.nx] +command = "npx" +args = [ + "-y", + "nx-mcp@latest", + "/Users/beyondnet/Source/evolith_tracker/src", + "--minimal", + "false", + "--disableTelemetry", +] diff --git a/docs/audit/tracker-gaps-opportunities-tracking.md b/docs/audit/tracker-gaps-opportunities-tracking.md index fa75980..0fa7592 100644 --- a/docs/audit/tracker-gaps-opportunities-tracking.md +++ b/docs/audit/tracker-gaps-opportunities-tracking.md @@ -31,8 +31,8 @@ This document is the only operational gap register in this repository. The maste | 4 | 🟡 OPEN | [GAP-023](#detail-gap-023) | Docs | Documentation gap | Docs | Docs | N/A | Re-Do Flow Not Fully Designed | Pending owner/action definition in this register. | 🟡 MEDIUM | 🟡 MEDIUM | | 5 | 🟡 OPEN | [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. | Only the remaining half is open. Withdrawn from `falsifiable-claims.json`: «four support contexts» needs judgement about WHICH four, and a probe that pretended to check it would refute the row on any document mentioning a context. | 🟡 MEDIUM | 🟡 MEDIUM | | 6 | 🟡 OPEN | [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. | Pending owner/action definition in this register. | 🟢 | 🟢 | -| 7 | 🟡 OPEN | [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. | Pending owner/action definition in this register. | 🟢 | 🟢 | -| 8 | 🟡⏳ 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 | +| 7 | 🟡⏳ 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 | +| 8 | 🟢 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. | 🟢 | 🟢 | | 9 | 🟢 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 | | 10 | 🟢 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 | | 11 | 🟢 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 | @@ -513,7 +513,7 @@ This document is the only operational gap register in this repository. The maste ### Detail COH-009 -- **Status:** 🟡 OPEN +- **Status:** 🟢 RESOLVED - **Type:** INCO (Source incoherence) - **Component:** Backend - **Module:** Release