docs(federation): cuerpo del corpus + pasada de revisión de coherencia#4
Conversation
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>
…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>
🔍 Code-review loop — hallazgos y mitigaciones3 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)
Contratos vs método/ejemplos
Pasada de coherencia (previa)
Residual (no bloqueante): 🤖 Generated with Claude Code |
…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>
…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>
🔬 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 (
|
| 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.domain → domain_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
Revisión adversarial — iter-6 (lean) · convergenciaSexta 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 (
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. |
Mergea
docs/federation-corpusamain. 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
departmentLayersHash→departmentLayerHash(singular).deidTokenreversible,automatabilityClass, validación de compatibilidad) + glosa de «corredor».registración→el alta;monitoreo→monitorización.origen(constitucion|marco) en la ficha; alineados convenciones y CF-03 → gobernanza §3 («el catálogo marca el origen») ya es verdad.dataClasses: taxonomíaC0–C4definida en el Marco de ejemplo.3. Loop de code-review + análisis cross-framework
No hay CI en el repo (
.github/workflowsno 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
Contratos vs método/ejemplos
sideEffectClassread/write/external → enum real; campos del bloquejurisdiction/dataSensitivity/language/businessRules→ reales;DecisionHop.fromAgent/toAgent/policyRefs→agentId/criteriaApplied/outcome; pseudo-policies DURO/BLANDO reescritas.legal:revision/revisar_propuesta/pol-revision-clausulas) reutilizando elcorrelationIddel corredor → alineado al canónico (legal:dictamenes/validar_clausula/pol-dlp-pii@2.0).version(O) del descriptor (lo usaban plantilla/ejemplo/runbooks sin estar en el contrato); añadido a los YAML canónicos.pol id @1.2→@1.0; dlp-pii-phipol-dlp-pii-phi@1.0→pol-dlp-pii@2.0; mapeo MCPrevisar_propuesta→validar_clausula.allow|deny|redact|require-prior-hop), no el enum deoutcome.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