{
  "version": "xarts.graph-relations/1",
  "family": "graph-relations",
  "operation": "bowtie-barriers",
  "provenance": {
    "legacyId": "concept-bowtie"
  },
  "data": {
    "event": {
      "id": "breach",
      "label": "Se filtra la base de reservas",
      "detail": "48.000 clientes",
      "role": "focus",
      "status": "hypothetical-event"
    },
    "paths": [
      {
        "id": "phishing",
        "label": "Phishing a un administrador",
        "side": "threat",
        "role": "neutral",
        "status": "proposed-path"
      },
      {
        "id": "api-key",
        "label": "Clave de API en un repositorio",
        "side": "threat",
        "role": "neutral",
        "status": "proposed-path"
      },
      {
        "id": "supplier",
        "label": "Acceso abierto del proveedor",
        "side": "threat",
        "role": "neutral",
        "status": "proposed-path"
      },
      {
        "id": "offboarding",
        "label": "Baja sin retirar permisos",
        "side": "threat",
        "role": "neutral",
        "status": "proposed-path"
      },
      {
        "id": "fine",
        "label": "Sanción de protección de datos",
        "side": "consequence",
        "role": "neutral",
        "status": "proposed-path"
      },
      {
        "id": "cancel",
        "label": "Cancelaciones en cadena",
        "side": "consequence",
        "role": "neutral",
        "status": "proposed-path"
      },
      {
        "id": "press",
        "label": "El caso llega a la prensa",
        "side": "consequence",
        "role": "neutral",
        "status": "proposed-path"
      }
    ],
    "barriers": [
      {
        "id": "mfa",
        "pathId": "phishing",
        "label": "Doble factor en el acceso remoto",
        "role": "neutral",
        "implementation": "present",
        "assurance": "untested"
      },
      {
        "id": "secret-scan",
        "pathId": "api-key",
        "label": "Escaneo de secretos en cada subida",
        "role": "neutral",
        "implementation": "present",
        "assurance": "untested"
      },
      {
        "id": "access-review",
        "pathId": "supplier",
        "label": "Revisión del acceso del proveedor",
        "role": "absent",
        "implementation": "absent",
        "assurance": "untested"
      },
      {
        "id": "account-close",
        "pathId": "offboarding",
        "label": "Cierre de cuentas el mismo día",
        "role": "neutral",
        "implementation": "present",
        "assurance": "untested"
      },
      {
        "id": "notice",
        "pathId": "fine",
        "label": "Aviso a los afectados en 72 horas",
        "role": "neutral",
        "implementation": "present",
        "assurance": "untested"
      },
      {
        "id": "rebooking",
        "pathId": "cancel",
        "label": "Reubicación por el canal directo",
        "role": "neutral",
        "implementation": "present",
        "assurance": "untested"
      },
      {
        "id": "spokesperson",
        "pathId": "press",
        "label": "Portavoz y mensaje preparados",
        "role": "neutral",
        "implementation": "present",
        "assurance": "untested"
      }
    ]
  },
  "relationship": {
    "kind": "qualitative-bowtie",
    "causalEvidence": "not-asserted",
    "probabilityEvaluation": "none",
    "effectivenessEvaluation": "none",
    "weight": "none",
    "order": "input",
    "pathDirection": "threat-to-event-to-consequence"
  },
  "typography": {
    "body": {
      "size": 19,
      "weight": 700,
      "lineHeight": 27
    },
    "note": {
      "size": 16,
      "weight": 400,
      "lineHeight": 24
    },
    "stamp": {
      "size": 14,
      "weight": 700,
      "lineHeight": 22
    },
    "title": {
      "size": 22,
      "weight": 700,
      "lineHeight": 32
    }
  },
  "fontFamily": "'Inter', system-ui, -apple-system, sans-serif",
  "measurement": {
    "exportText": "glyph-advances"
  },
  "paints": {
    "neutral": {
      "fill": "surface",
      "stroke": "border",
      "text": "textPrimary",
      "dash": ""
    },
    "focus": {
      "fill": "series.blue",
      "stroke": "series.blue",
      "text": "surface",
      "dash": ""
    },
    "warning": {
      "fill": "surface",
      "stroke": "negative",
      "text": "negative",
      "dash": ""
    },
    "absent": {
      "fill": "none",
      "stroke": "textMuted",
      "text": "textMuted",
      "dash": "6 4"
    },
    "favorable": {
      "fill": "surfaceAlt",
      "stroke": "series.teal",
      "text": "textPrimary",
      "dash": ""
    }
  },
  "layout": {
    "margin": {
      "top": 24,
      "right": 24,
      "bottom": 24,
      "left": 24
    },
    "grid": 12,
    "orientation": "vertical-paths",
    "eventFraction": 0.16,
    "endpointFraction": 0.17,
    "convergence": 36,
    "barrierGap": 16,
    "minimumPathTextWidth": 88,
    "minimumBarrierTextWidth": 72,
    "padding": {
      "x": 14,
      "y": 12
    },
    "eventLines": 4,
    "eventDetailLines": 2,
    "pathLines": 3,
    "barrierLines": 3,
    "textOverflow": "whole-words",
    "pathLineHeight": 24,
    "detailGap": 8,
    "rowGap": 32,
    "columnGap": 36,
    "outerChannel": 40,
    "channelStep": 6,
    "eventGap": 56,
    "geometryDecimals": 2
  },
  "marks": {
    "boxRadius": 4,
    "barrierPoint": 12,
    "thin": 1.25,
    "medium": 2,
    "thick": 4,
    "arrowLength": 9,
    "arrowHeight": 8,
    "connector": "textPrimary",
    "cornerRadius": 6
  },
  "labels": {
    "zones": {
      "threats": "Causas",
      "prevention": "Barreras preventivas",
      "event": "Suceso",
      "recovery": "Barreras de recuperación",
      "consequences": "Consecuencias"
    },
    "letterSpacing": 0.06,
    "barrierNotice": "nada aquí está medido: una vía con más barreras no es más segura",
    "modelNotice": "Vías propuestas, sin ponderación. «Presente» describe implantación, no eficacia: ninguna barrera se ha ensayado. La barrera discontinua está declarada y ausente.",
    "showModelNotice": true
  },
  "annotations": {
    "band": {
      "text": "ninguna de estas barreras se ha probado con un simulacro",
      "role": "absent"
    },
    "verdict": "La revisión del acceso del proveedor está escrita y no se hace: por esa vía se llega a la filtración sin encontrarse nada.",
    "verdictLines": 2,
    "bandHeight": 48,
    "noteColor": "textMuted",
    "verdictColor": "accent",
    "separatorOpacity": 0.5
  },
  "interaction": {
    "event": "Suceso hipotético, sin probabilidad estimada",
    "path": "Vía cualitativa propuesta, sin peso ni riesgo calculado",
    "barrier": "Barrera declarada, eficacia sin ensayar",
    "absent": "Ausente",
    "present": "Presente"
  },
  "document": {
    "textOverflow": "preserve",
    "header": {
      "title": "La vía del proveedor llega a la filtración sin una sola barrera puesta",
      "subtitle": "Cuatro causas y tres consecuencias de la fuga del CRM de reservas: siete vías declaran su control y la del proveedor está escrita en el procedimiento y no está puesta"
    },
    "footer": {
      "source": "xarts · ejemplo de demostración",
      "notes": "Esquema ilustrativo para explorar la forma y sustituirlo por el propio."
    },
    "spacing": {
      "horizontalPadding": 24,
      "topPadding": 22,
      "bottomPadding": 16,
      "minimumTextGap": 4
    }
  },
  "presentation": {
    "theme": "anlak",
    "dimensions": {
      "width": 940,
      "height": 1096
    },
    "locale": "es-ES",
    "fonts": "reference",
    "surface": "theme",
    "framePadding": 24
  },
  "output": {
    "filename": "concept-bowtie",
    "embedSpec": true,
    "geometryDecimals": 2
  }
}
