Skip to content

docs(federation): cuerpo del corpus + pasada de revisión de coherencia#4

Merged
e2its merged 31 commits into
mainfrom
docs/federation-corpus
May 31, 2026
Merged

docs(federation): cuerpo del corpus + pasada de revisión de coherencia#4
e2its merged 31 commits into
mainfrom
docs/federation-corpus

Conversation

@e2its

@e2its e2its commented May 31, 2026

Copy link
Copy Markdown
Owner

Mergea docs/federation-corpus a main. Tres bloques: el cuerpo del corpus, una pasada de revisión de coherencia y un loop de code-review + análisis cross-framework.

1. Cuerpo del corpus de Myrmion Federation

Specs, esquemas (identidad y bloque cultural), gobernanza federada, criterios funcionales, convenciones de mapping, patrones de drift, plantillas socráticas, ejemplo end-to-end del corredor comercial→legal y apéndice (agnóstico de producto en el cuerpo).

2. Pasada de revisión de coherencia

  • Contratos: CF-04 unificado a «tres propiedades» (12 vs 2 sitios); departmentLayersHashdepartmentLayerHash (singular).
  • Glosario contrastado contra los esquemas (deidToken reversible, automatabilityClass, validación de compatibilidad) + glosa de «corredor».
  • Español de España: registraciónel alta; monitoreomonitorización.
  • Hueco del Marco en la vía de policy, cerrado: campo origen (constitucion|marco) en la ficha; alineados convenciones y CF-03 → gobernanza §3 («el catálogo marca el origen») ya es verdad.
  • dataClasses: taxonomía C0–C4 definida en el Marco de ejemplo.

3. Loop de code-review + análisis cross-framework

No hay CI en el repo (.github/workflows no existe); el «verde» se sustituye por checks reproducibles: 0 enlaces rotos (73 .md) y 0 mermaid desbalanceados (5 archivos). Más 3 iteraciones de finders adversariales (agentes en paralelo) y coherencia paraguas↔Adoption↔Federation. Hallazgos corregidos (verificados contra los esquemas autoritativos):

Cross-framework

  • «Extiende el protocolo MCP» (paraguas §3 + Adoption §5) contradecía el principio nuclear «Federation no es un protocolo nuevo / sin extensiones» (~10 sitios) → «sobre MCP, sin extenderlo».
  • checklist-prerrequisitos: «custodia/gobernanza de Adoption §5» → §4 (Gobernanza).

Contratos vs método/ejemplos

  • convenciones-mapping (la doc del método, que exige «no inventes campos») referenciaba campos inexistentes en los esquemas: sideEffectClass read/write/external → enum real; campos del bloque jurisdiction/dataSensitivity/language/businessRules → reales; DecisionHop.fromAgent/toAgent/policyRefsagentId/criteriaApplied/outcome; pseudo-policies DURO/BLANDO reescritas.
  • bloque-contexto-cultural-ejemplo usaba agente/tool/policy no-canónicos (legal:revision/revisar_propuesta/pol-revision-clausulas) reutilizando el correlationId del corredor → alineado al canónico (legal:dictamenes/validar_clausula/pol-dlp-pii@2.0).
  • esquema-identidad: añadido campo version (O) del descriptor (lo usaban plantilla/ejemplo/runbooks sin estar en el contrato); añadido a los YAML canónicos.
  • registro-excepciones pol id @1.2@1.0; dlp-pii-phi pol-dlp-pii-phi@1.0pol-dlp-pii@2.0; mapeo MCP revisar_propuestavalidar_clausula.
  • guia-arquitectura: el policy engine devuelve los 4 efectos (allow|deny|redact|require-prior-hop), no el enum de outcome.
  • fail-closed general atribuido a CF-03 (policy engine), no CF-06 (DLP); el fail-closed de detector/tokenizador específico se mantiene en CF-06.
  • gobernanza: aclarado «cuatro deltas detallados + drift en su propio doc» vs la tabla resumen de 5 filas.

Residual (nota, no bloqueante): convenciones §1 atribuye dos aforismos parafraseados a «manifiesto §5/§8»; el §5 (mapping = control) encajaría mejor en §3.3. Pendiente de criterio del autor.

Estado de revisión (merge parcial, deliberado)

Detalle vivo en docs/federation/indice-y-guia-de-navegacion.md: 7 ✅ v1.0 (manifesto, índice, glosario, regla-anti-acoplamiento, criterios-funcionales, los dos esquemas) · resto en 📋 pendiente de revisión / 📝 draft. Coherencia del cuerpo verificada por el loop de code-review (3 iteraciones).

🤖 Generated with Claude Code

e2its and others added 12 commits May 30, 2026 22:39
Materializa lo que el manifiesto de Federation (v1.0) prometía pero no
contenía: esquemas, convenciones, gobernanza, método y ejemplos. El
manifiesto no se toca. Todo el cuerpo es agnóstico de tecnología
("criterios, no marcas"); las marcas viven solo en docs/federation/appendix/.

Cuerpo normativo (docs/federation/):
- Cimientos: índice, glosario, criterios funcionales (CF-01..CF-06),
  regla anti-acoplamiento.
- Contratos: esquema de identidad de agente (con contrato de hash),
  esquema del bloque de contexto cultural, guía de arquitectura funcional.
- Método/gobernanza: convenciones de mapping Constitución→policy, patrones
  de detección de drift, gobernanza federada, guía de adopción por fases,
  métricas, perfil de adopción (VF01..VF10), ADRs (plantilla + ejemplo).
- appendix/ (vivo/comunidad): fichas de stack, policy-templates por
  dialecto, mapeo de transporte MCP/A2A, recetas de drift sectoriales.

Plantillas socráticas (templates/federation/) con sus -ejemplo, y un
ejemplo end-to-end del corredor Comercial→Legal (examples/federation/)
validable contra los esquemas, con diagramas Mermaid vendor-neutral.

Añade CODEOWNERS (custodia dual cuerpo/apéndice), CONTRIBUTING.md y
.gitignore; actualiza README.md y docs/manifesto.md.

Verificado: 0 enlaces rotos, 0 fugas de marca en el cuerpo, cobertura
del manifiesto §3.1–§7 completa.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… de 'corredor'

Contrasta cada definición técnica contra su contrato canónico:
- deidToken: acotado a redacción reversible (en irreversible no hay token);
  añade scope/ttl y el campo deidTokens del bloque.
- automatabilityClass: valores literales duro/blando/no-automatizable.
- Identidad criptográfica: las tres propiedades de CF-04.
- Validación de compatibilidad: nombra compatibilityPolicy y {escalar, rechazar}.
- Corredor: entrada reescrita con ejemplo end-to-end y glosa de sentido
  (corredor de tránsito, no de bolsa), manteniendo el término.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…iptográfica

El corpus usaba 'tres propiedades de CF-04' en 12+ sitios (esquema de
identidad, regla anti-acoplamiento, gobernanza, runbooks, glosario) pero
'cuatro propiedades' en dos: el cuerpo de CF-04 y el ADR de ejemplo. El
checklist de CF-04 tiene cuatro comprobaciones que la prosa canónica resume
en tres propiedades (criptográfica + verificable-antes-de-ejecutar se funden).

Alinea los dos outliers a 'tres propiedades' y reconcilia explícitamente el
checklist de 4 ítems con las 3 propiedades nombradas.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…dentidad)

El bloque de contexto cultural usaba departmentLayersHash (plural), rompiendo
el paralelismo con constitutionHash/regulatoryFrameworkHash (singular) y con
departmentLayerRef del descriptor de identidad (un agente deriva de una sola
capa). El plural insinuaba un conjunto que el contrato de hash (§6) no define
cómo serializar, abriendo ambigüedad de interoperabilidad.

Renombra a departmentLayerHash en los 7 artefactos (esquema, mapeos de
transporte MCP/A2A, hop-1/2.json, plantilla y ejemplo) y alinea dos menciones
en prosa (guía de arquitectura funcional y manifiesto §3.2).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- "registración" → "el alta" (8 sitios en Federation): elimina el anglicismo
  y lo deja consistente con el término de la casa, que ya usa "el alta"/"dar
  de alta" (uso peninsular) en decenas de sitios, incluidos títulos de sección.
- "monitoreo/monitorea" → "monitorización/monitoriza" (2 sitios en Adoption):
  forma latinoamericana → peninsular.

Triados y NO tocados por ser correctos en español de España: "soportar"=support
(uso normal peninsular) y "compliance" (nombre del departamento "Legal y
Compliance" / función corporativa aceptada / URLs).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ndice)

Refleja el estado real de revisión: solo los 5 documentos validados quedan en
✅ v1.0 (manifesto, índice, glosario, criterios-funcionales, regla-anti-
acoplamiento); el resto del cuerpo, apéndice, plantillas y ejemplos pasan de
⏳ a 📝 draft.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…isión'

El usuario asume la revisión de los dos esquemas (identidad, bloque) y de
criterios-funcionales; pasan a 🔍 en revisión. criterios-funcionales baja de
✅ v1.0 a en revisión mientras se valida.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…dos por Claude

Distingue los documentos que Claude ha revisado/editado y esperan validación
del usuario (📋 pendiente de revisión) de los aún sin tocar (📝 draft).
Aplicado a gobernanza-federada y guia-arquitectura-funcional.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…es de §2.1

El diagrama de ejemplo mostraba seis compuertas que no coincidían con las seis
comprobaciones normativas de gobernanza §2.1: faltaban #4 (dataClasses vs Marco
Regulatorio) y #6 (coherenceReview reproducible), y partía agentId en dos. Lo
reescribe (flowchart + tabla + prosa) a las seis normativas, incorporando la
comprobación del Marco que faltaba.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…o `origen`)

gobernanza §3 dependía de policies "derivadas del Marco" marcadas por origen,
pero el formato de policy era 100% Constitución (campo principioConstitucional,
sin origen). Alinea toda la cadena:

- ficha-policy-template: nuevo campo `origen` (constitucion|marco) y §2
  generalizado principioConstitucional -> `origen`+`principioDeOrigen`; el
  origen determina si la violación es excepcionable.
- ficha-policy-template-ejemplo: declara origen=constitucion.
- convenciones-mapping: nota de que el método aplica igual al Marco; el origen
  distingue la capa y el tratamiento de excepción.
- CF-03 (criterios-funcionales): reconoce policies de la Constitución y del Marco.

Así el "el catálogo marca el origen de cada regla" de gobernanza §3 es verdad.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
El usuario completó su revisión de criterios-funcionales, esquema-identidad-agente
y esquema-bloque-contexto-cultural; pasan de 🔍 en revisión a ✅ v1.0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…l Marco de ejemplo

Cierra una referencia colgante: los descriptores de Federation de Consultora
Modelo usan dataClasses ["C1","C2","C3"] "según el vocabulario del Marco", pero
el marco-regulatorio-ejemplo describía las categorías solo en prosa, sin
codificarlas. Añade la tabla de taxonomía C0–C4 que mapea esas categorías a los
códigos, haciendo trazables las dataClasses/dataClassesTouched de los agentes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@e2its e2its self-assigned this May 31, 2026
e2its and others added 4 commits May 31, 2026 20:51
…doption §4

Análisis de coherencia paraguas ↔ Adoption ↔ Federation. Dos incoherencias:

- "Extiende el protocolo MCP" (paraguas §3 y Adoption §5) contradecía el
  principio nuclear de Federation ("No es un protocolo nuevo... sin extensiones
  del estándar", ~10 sitios). Reformulado a "sobre MCP, sin extenderlo".
- checklist-prerrequisitos-fase0: "custodia diferenciada / gobernanza de
  Adoption §5" → §4 (Gobernanza). §5 es "Interoperabilidad y su frontera"; las
  refs a "patrones manuales de Adoption §5" sí eran correctas y se mantienen.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…(no fantasma)

Code-review: convenciones-mapping —la doc normativa del método, que exige "no
inventes campos"— referenciaba campos inexistentes en los esquemas. Corregido:
- sideEffectClass: read/write/external -> lectura/escritura/comunicacion-externa/compromiso
- campos del bloque jurisdiction/dataSensitivity/language/businessRules ->
  campos reales (hopCount, decisionChain/DecisionHop, businessCaseId; sensibilidad
  via dataClassesTouched)
- DecisionHop.fromAgent/toAgent/policyRefs -> agentId/criteriaApplied/outcome
- evidencia anclada a criteriaApplied (no policyRefs)
- pseudo-policies DURO/BLANDO reescritas con campos reales
- fail-closed degradación atribuida a CF-03 (policy engine), no CF-06 (DLP)

Y registro-excepciones: pol id `paso-por-legal@1.2` -> `pol-paso-por-legal@1.0`.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- bloque-contexto-cultural-ejemplo: alineado al corredor canónico
  (legal:revision->legal:dictamenes, revisar_propuesta->validar_clausula,
  pol-revision-clausulas@2.0->pol-dlp-pii@2.0). Ya no contradice al corredor.
- esquema-identidad: añade campo `version` (O) del descriptor, distinto de
  schemaVersion; lo usaban plantilla/ejemplo/runbooks sin estar en el contrato.
  Añadido también a los YAML canónicos del corredor.
- gobernanza: aclara "cuatro deltas detallados + un quinto (drift) en su doc"
  vs la tabla resumen de 5 filas.
- ficha (plantilla+ejemplo): fail-closed atribuido a CF-03, no CF-06 (coherente
  con convenciones).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Propaga el fail-closed GENERAL a CF-03 (policy engine) donde quedó CF-06:
  convenciones §2/Relacionados, appendix policy-templates/README y paso-por-legal.
  (cifras-sin-finanzas y dlp-pii-phi mantienen CF-06: su fail-closed es del
  detector/tokenizador, no del policy engine.)
- mapeo-transporte/mcp.md: tool revisar_propuesta -> validar_clausula (canónico).
- dlp-pii-phi.md: policy id pol-dlp-pii-phi@1.0 -> pol-dlp-pii@2.0 (id canónico
  usado por bloque-ejemplo, hop JSONs y dlp-redaccion.md).
- guia-arquitectura: el policy engine devuelve los 4 EFECTOS
  (allow|deny|redact|require-prior-hop), no el enum de outcome.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@e2its

e2its commented May 31, 2026

Copy link
Copy Markdown
Owner Author

🔍 Code-review loop — hallazgos y mitigaciones

3 iteraciones de finders adversariales + análisis cross-framework. Todo verificado contra los esquemas autoritativos y committeado/pusheado por lote (IPP). Una 4ª iteración de confirmación adversarial está en curso.

Checks reproducibles (no hay CI en el repo): 0 enlaces rotos (73 .md) · 0 mermaid desbalanceados (5).

Cross-framework (paraguas ↔ Adoption ↔ Federation)

Hallazgo Sev Mitigación Commit
«Extiende el protocolo MCP» (paraguas §3 + Adoption §5) contradecía el principio nuclear «Federation no es un protocolo nuevo / sin extensiones» (~10 sitios) warning Reformulado a «sobre MCP, sin extenderlo» f73f81c
checklist-prerrequisitos: «custodia/gobernanza de Adoption §5» info → §4 (Gobernanza) f73f81c

Contratos vs método/ejemplos

Hallazgo Sev Mitigación Commit
convenciones-mapping (la doc del método, que exige «no inventes campos») referenciaba campos inexistentes en los esquemas: sideEffectClass read/write/external, bloque jurisdiction/dataSensitivity/language/businessRules, DecisionHop.fromAgent/toAgent/policyRefs critical Reescrito a campos reales (enum correcto; hopCount/decisionChain; agentId/criteriaApplied/outcome); pseudo-policies DURO/BLANDO reescritas b2a330d
bloque-contexto-cultural-ejemplo: agente/tool/policy no-canónicos (legal:revision/revisar_propuesta/pol-revision-clausulas) reutilizando el correlationId del corredor warning Alineado al canónico (legal:dictamenes/validar_clausula/pol-dlp-pii@2.0) 225a647
esquema-identidad: campo version del descriptor usado por plantilla/ejemplo/runbooks sin estar en el contrato warning Añadido version (O) al esquema y a los YAML canónicos 225a647
guia-arquitectura: el policy engine devolvía el enum de outcome, no los efectos warning allow|deny|redact|require-prior-hop 118ce2a
ids de policy huérfanos pol-paso-por-legal@1.2, pol-dlp-pii-phi@1.0; tool revisar_propuesta en mapeo-transporte/mcp.md warning @1.0, pol-dlp-pii@2.0, validar_clausula b2a330d,118ce2a

Pasada de coherencia (previa)

Hallazgo Mitigación Commit
CF-04 «cuatro» vs «tres propiedades» (2 outliers vs 12 sitios) unificado a tres 52d817d
departmentLayersHash (plural) ≠ identidad singular departmentLayerHash (9 ficheros) 50c442c
Glosario vs esquemas (deidToken reversible, automatabilityClass, compatibilidad) corregido + glosa de «corredor» f429325
es-ES: registración, monitoreo el alta, monitorización 4f52043
Hueco del Marco en la vía de policy campo origen en la ficha; alineados convenciones + CF-03 dc32264
dataClasses C0–C4 sin definir en el Marco taxonomía añadida c50fcb0
Diagrama del gate ≠ las 6 comprobaciones de §2.1 (faltaban dataClasses/Marco y reproducibilidad) reescrito a las 6 normativas cb3054c
fail-closed general atribuido a CF-06 (DLP) → CF-03 (policy engine); el de detector/tokenizador se mantiene CF-06 225a647,118ce2a
gobernanza: «cuatro deltas» vs tabla resumen de 5 aclarado (4 detallados + drift en su doc) 225a647

Residual (no bloqueante): convenciones §1 atribuye 2 aforismos parafraseados a «manifiesto §5/§8»; el §5 (mapping = control) encajaría mejor en §3.3. Pendiente de criterio del autor.

🤖 Generated with Claude Code

e2its and others added 12 commits May 31, 2026 21:48
…n honesto

- Residual del code-review: convenciones §1 atribuía el aforismo «con mapping es
  un control» a manifiesto §5 (Gobernanza); pertenece a §3.3 (Capa de mapping),
  que el propio doc dice materializar. El ref a §8 (frontera de lo no traducible)
  se mantiene: es correcto.
- README «Estado del proyecto»: el cuerpo de Federation no es v1.0 entero —solo
  7/13 docs validados según el índice—; pasa a «En preparación (parcial v1.0)» y
  las plantillas+ejemplo a «En preparación», coherente con los estados del índice.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
GitHub Actions con dos jobs reproducibles que materializan los checks del loop:
- link-check: todos los enlaces markdown relativos resuelven (scripts/ci/check_links.py)
- mermaid-check: cada bloque ```mermaid``` renderiza con mermaid-cli (check_mermaid.py)
Dispara en push a main/docs/** y en pull_request. Hace «CI green» literal en el PR.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ADR-0002 registra 3 decisiones (quinto segmento; fail-closed = convención no CF;
versión de cifras evoluciona). Tanda 1 de arreglos del code-review iter-4:
- dominio del agentId = QUINTO segmento (no cuarto): convenciones, fichas, ejemplo
- playbook: agentId con función canónica (no fonseca/riera); enviar_propuesta_cliente
- CF-06: la Guía de protección de datos es §2.1 (no §3.4): criterios, guia-arq, dlp-redaccion
- glosario: revisión de coherencia de Adoption = Adoption §4 (no §5)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…y fix del RDR

- secuencia-corredor.md: quita ':' de las etiquetas de participante mermaid
  (rompía el render en CI; el otro sequenceDiagram sin ':' sí pasa) y comillas
  en mensajes; corrige «las tres propiedades de CF-04» (eran las reales de
  identidad criptográfica, no 'integridad del canal').
- ADR-0002: restaura las citas «cuarto segmento» que un sed global pisó.
- check_mermaid.py: muestra el error de parseo completo si un diagrama falla.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…maid)

El ';' es separador de sentencias en mermaid: las Note que lo contenían rompían
el parseo (Parse error line 14, got 'INVALID'). Era la causa real del fallo de
CI, no los ':' de participante. Sustituido por salto de línea / coma.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…1, 70)

Quedaban dos Note con ';' tras el commit anterior. Verificado: 0 ';' en el bloque.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…co) [CRÍTICO]

Code-review iter-4: el ejemplo ponía la redacción del NIF (pol-dlp-pii@2.0 +
outcome redactado) en el salto 2 (Legal), contradiciendo hop-1/hop-2.json, que
la sitúan en el salto 1 (Comercial, en el origen). Corregido:
- salto 1 (Comercial): + pol-dlp-pii@2.0, outcome redactado (la DLP redacta el NIF)
- salto 2 (Legal): validar_clausula, outcome permitido (valida sin re-identificar)
- hopCount 2 -> 3 y se reencuadra como el bloque que va al cierre (salto 3):
  decisionChain lleva los saltos PREVIOS (longitud = hopCount - 1), como hop-2.json.
Prosa (intro, §2, §4) alineada con el JSON.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…vención

Code-review iter-4 + RDR-0002 D2:
- "regla anti-acoplamiento, regla 4" -> §3 (la traducción mTLS->propiedades vive
  en §3 'Casos canónicos', no en el item 4 del test, que es 'vigencia temporal').
  Corrige criterios, glosario, gobernanza y la propia regla-anti-acoplamiento.
- fail-closed (degradación segura) = convención del método (convenciones §3, paso 6),
  sin atribuirlo a ningún CF: convenciones, ficha(+ejemplo), README, paso-por-legal,
  cifras-sin-finanzas, dlp-pii-phi.
- convenciones §1: el método es §3.3; CF-03 es el motor que evalúa (no declara el método).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…canónicas

- exigir-paso-legal / bloqueo-cifras: 'hop.domain' no existe en el DecisionHop;
  se deriva del agentId -> domain_of(hop.agentId).
- exigir-paso-legal: el salto del legal es validar_clausula (no emitir_dictamen).
- runbook-onboarding-ejemplo: salto 1 redactado (+pol-dlp-pii@2.0); salto 2 = validar_clausula.
- comercial.agente.yaml: elimina la capability huérfana generar_propuesta
  (no la referencia ningún flujo/policy/diagrama; fuera del set canónico de tools).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Quita los estados inventados «(parcial v1.0)» y «vivo»; el vocabulario es solo
Activo / v1.0 / En preparación / Pendiente. Cuerpo, plantillas y apéndice de
Federation quedan en «En preparación».

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ar, Rego DLP

- README: «Extiende el protocolo MCP» -> «sobre MCP, sin extenderlo» (faltaba del
  lote cross-framework anterior).
- perfil (plantilla): defaults VF04/VF05/VF07 -> media/mixta/media (coinciden con
  el perfil normativo, antes General/Reversible/Alta).
- appendix/README: matriz de Lunar.dev MCPX -> CF-02=◐, CF-04=○ (según su ficha).
- dlp-pii-phi: el Rego comparaba dataClassesTouched (C0–C4) contra {"pii","phi"}
  y nunca disparaba -> usa {"C2","C3"} (vocabulario del Marco); TVs alineados.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ia falló)

La sed con delimitador '#' chocó con el '#' del comentario Rego y dejó la línea
124 sin cambiar. Ahora sensitive_classes usa el vocabulario real del Marco.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
e2its and others added 3 commits May 31, 2026 22:54
…versión cifras

- perfil-ejemplo: defaults de la tabla -> normativos (media/mixta/media); VF07
  (Alta) pasa a «Sí difiere» (antes «No» por comparar con el default viejo Alta),
  lo que activa el endurecimiento del gate que el perfil normativo prescribe.
- cifras-sin-finanzas: nota de versión (D3 de ADR-0002) — @1.0 base / @1.1 vigente
  en el ejemplo / @1.2 propuesta por drift; divergencia deliberada (ciclo de vida).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…hApplied

Code-review iter-4 #2: el Patrón A nombraba 'constitutionHash aplicado en el salto'
y segmentaba 'por constitutionHash', pero el campo del DecisionHop es
constitutionHashApplied (constitutionHash es de nivel de bloque, el del emisor).
Corregidas las 4 referencias por-salto del Patrón A (líneas 74, 82, 83, 90).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ed previa falló por **)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@e2its

e2its commented May 31, 2026

Copy link
Copy Markdown
Owner Author

🔬 Iteración 4 (verificación adversarial) + Iteración 5 (arreglos)

Corrección honesta: las 3 primeras iteraciones limpiaron lo que se tocó, no el corpus entero. La iteración 4 (workflow adversarial, 92 agentes, verificación de 3 lentes) encontró 27 hallazgos confirmados —muchos en ficheros nunca revisados (playbook, runbook-ejemplo, plantilla de perfil, fichas del apéndice) y 2 bugs introducidos por mis propios fixes—. La iteración 5 los corrige todos.

🟢 CI (docs-ci) — ahora literal y verde

Se añadió GitHub Actions (scripts/ci/check_links.py + check_mermaid.py). link-check ✅ · mermaid ✅. El CI cazó un diagrama roto real (secuencia-corredor.md) que 4 iteraciones de revisión de contenido no vieron: el ; es separador de sentencias en mermaid (46df994).

📋 RDR — docs/federation/adr/0002 (3 decisiones)

  • D1 dominio = quinto segmento del agentId (no cuarto: el 4.º es <org>).
  • D2 fail-closed = convención del método (convenciones §3, paso 6), no un CF (ni CF-03 ni CF-06 lo declaran).
  • D3 pol-cifras-sin-finanzas evoluciona (@1.0 ficha → @1.1 ejemplo → @1.2 drift): deliberado, con nota.

Hallazgos corregidos (iter-4) por criticidad

🔴 Críticos

Hallazgo Commit
bloque-ejemplo: redacción DLP en el salto equivocado (Legal en vez de Comercial/origen) + hopCount/decisionChain 7e43185
playbook: agentId con nombre de persona (fonseca/riera) en vez de función 73a92b3

🟠 Warnings

Hallazgo Commit
dlp-pii-phi: Rego comparaba dataClassesTouched (C0–C4) contra {"pii","phi"} → nunca disparaba dcdff8b
patrones-drift: campo por-salto es constitutionHashApplied, no constitutionHash fd260fa
convenciones y fichas: campo fantasma hop.domaindomain_of(hop.agentId) f8f1004
perfil (plantilla+ejemplo): defaults VF04/05/07 → normativos; VF07 pasa a «Sí difiere» 6b61eb1,c7a1995
appendix/README: matriz de Lunar MCPX → coherente con su ficha (CF-02=◐, CF-04=○) 6b61eb1
secuencia-corredor: «3 propiedades de CF-04» mal listadas 2bed842
runbook-ejemplo/exigir-paso-legal: tool del legal = validar_clausula (no emitir_dictamen) f8f1004
comercial.agente.yaml: tool huérfana generar_propuesta eliminada f8f1004
README/glosario: «extiende MCP»→«sobre MCP»; «Adoption §5»→§4 6b61eb1,73a92b3
refs «regla 4»→§3; CF-06 «Guía §3.4»→§2.1 c582624,73a92b3

➖ Retirado (falso positivo): «Adoption omite AI Factory» — Adoption/Federation son el par relacionado; AI Factory es independiente y su omisión en el subtítulo de Adoption es correcta.

Estado: rama docs/federation-corpus al día (fd260fa), CI verde, índice con estados estándar (Activo/v1.0/En preparación). Listo para que el merge sea tuyo.

🤖 Generated with Claude Code

@e2its

e2its commented May 31, 2026

Copy link
Copy Markdown
Owner Author

Revisión adversarial — iter-6 (lean) · convergencia

Sexta y última iteración de revisión adversarial multi-agente sobre la rama. El cuerpo normativo —esquemas, criterios funcionales, convenciones, mapping, drift— está limpio. Las últimas iteraciones ya solo sacan nits de coherencia en material de ejemplo (plantillas rellenas + diagrama): señal de convergencia, se cierra el loop.

Quedan 5 hallazgos no bloqueantes, verificados a mano contra los artefactos canónicos (hop-1.json, hop-2.json, legal.agente.yaml, README del corredor). Se difieren (no se aplican en este PR):

# Sev Fichero Qué
1 warning templates/federation/bloque-contexto-cultural-ejemplo.md:147 §9 off-by-one: «hopCount (1) ↔ chain (1)» y «hopCount=2 y dos eslabones» contradicen len = hopCount − 1 (L89) y los canónicos
2 warning …/bloque-contexto-cultural-ejemplo.md:66 timestamp del DecisionHop[0] (09:12:00Z) ≠ canónico hop-2.json:21 (10:00:00Z), mismo eslabón append-only
3 info examples/federation/diagramas/secuencia-corredor.md:66 «bloque con 2 hops» ambiguo (el bloque que Legal devuelve es hopCount 3)
4 info …/secuencia-corredor.md:40 «salto N» del diagrama (transporte) ≠ «salto N» del README/bloques (decisión)
5 warning templates/federation/descriptor-agente-ejemplo.md:131 el ejemplo infra-declara el agente legal: dice única tool emitir_dictamen, pero el canónico legal.agente.yaml expone validar_clausula+emitir_dictamen y el corredor invoca validar_clausula

Ninguno toca el espesor normativo ni colisiona con las decisiones del ADR-0002. CI verde. Listo para merge; los 5 retoques quedan apuntados para una pasada posterior.

@e2its
e2its merged commit b9eeb5a into main May 31, 2026
4 checks passed
@e2its
e2its deleted the docs/federation-corpus branch May 31, 2026 21:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant