← Files ClaraARCHIVED FILE

modules/reporting-engine/catalog/png_gallery_manifest.json

212 KB · Oct 3, 2026 · 06:30 UTC

↓ Download file

{
  "schema_version": "1.1",
  "item_count": 73,
  "quality_summary": "12 QA-flagged | 12 crop-risk | 0 sparse",
  "quality_thresholds": {
    "high_edge_ink_ratio": 0.02,
    "high_crop_risk_ink_ratio": 0.02,
    "low_non_white_ratio": 0.005
  },
  "items": [
    {
      "label": "variance / waterfall",
      "plugin_source": "variance-analysis",
      "plugin_source_label": "Variance Analysis",
      "source": "../variance/variance/waterfall.png",
      "output": "variance__waterfall.png",
      "artifact_type": "png",
      "dimensions": {
        "width": 1000,
        "height": 388
      },
      "stats": {
        "byte_count": 20148,
        "non_white_ratio": 0.08400773195876289,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": null,
        "grammar": null,
        "metrics": "Value_LC",
        "dimensions": "Company, Brand, Channel +1",
        "periods": null,
        "trace_widths": null,
        "source_reference": null
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Sales variance | LC",
          "_Aug-2017 vs _Aug-2016, year to date"
        ],
        "who": "Mexico hair color",
        "what": "Sales variance | LC",
        "when": "_Aug-2017 vs _Aug-2016, year to date",
        "source": "../variance/variance/waterfall_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../variance/variance/waterfall.png"
        },
        {
          "label": "context",
          "href": "../variance/variance/waterfall_context.json"
        },
        {
          "label": "data",
          "href": "../variance/variance/waterfall_chart_data.json"
        },
        {
          "label": "manifest",
          "href": "../variance/variance/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../variance/variance/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "variance.scenario_bridge",
        "status": "context_only",
        "when_to_use": "standard_variance_waterfall",
        "required_parameters": [
          "metric",
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "png",
            "formats": [
              "png"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "variance / waterfall_small_multiples",
      "plugin_source": "variance-analysis",
      "plugin_source_label": "Variance Analysis",
      "source": "../variance/variance/waterfall_small_multiples.png",
      "output": "variance__waterfall_small_multiples.png",
      "artifact_type": "png",
      "dimensions": {
        "width": 1510,
        "height": 1159
      },
      "stats": {
        "byte_count": 77337,
        "non_white_ratio": 0.035021056059974055,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": null,
        "grammar": null,
        "metrics": null,
        "dimensions": null,
        "periods": null,
        "trace_widths": null,
        "source_reference": null
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Sales variance by Company | LC",
          "_Aug-2017 vs _Aug-2016, year to date"
        ],
        "who": "Mexico hair color",
        "what": "Sales variance by Company | LC",
        "when": "_Aug-2017 vs _Aug-2016, year to date",
        "source": "../variance/variance/waterfall_small_multiples_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../variance/variance/waterfall_small_multiples.png"
        },
        {
          "label": "context",
          "href": "../variance/variance/waterfall_small_multiples_context.json"
        },
        {
          "label": "data",
          "href": "../variance/variance/waterfall_small_multiples_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../variance/variance/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../variance/variance/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "variance.scenario_bridge",
        "status": "context_only",
        "when_to_use": "standard_variance_small_multiples",
        "required_parameters": [
          "dimension"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "png",
            "formats": [
              "png"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "variance / pvm_decomposition_ladder",
      "plugin_source": "variance-analysis",
      "plugin_source_label": "Variance Analysis",
      "source": "../variance/variance/pvm_decomposition_ladder.png",
      "output": "variance__pvm_decomposition_ladder.png",
      "artifact_type": "png",
      "dimensions": {
        "width": 1640,
        "height": 580
      },
      "stats": {
        "byte_count": 33455,
        "non_white_ratio": 0.05554247266610597,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": null,
        "grammar": null,
        "metrics": "Value_LC",
        "dimensions": null,
        "periods": null,
        "trace_widths": null,
        "source_reference": null
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Sales variance: price, units, mix | LC",
          "_Aug-2017 vs _Aug-2016, year to date"
        ],
        "who": "Mexico hair color",
        "what": "Sales variance: price, units, mix | LC",
        "when": "_Aug-2017 vs _Aug-2016, year to date",
        "source": "../variance/variance/pvm_decomposition_ladder_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../variance/variance/pvm_decomposition_ladder.png"
        },
        {
          "label": "context",
          "href": "../variance/variance/pvm_decomposition_ladder_context.json"
        },
        {
          "label": "data",
          "href": "../variance/variance/pvm_decomposition_ladder.csv"
        },
        {
          "label": "manifest",
          "href": "../variance/variance/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../variance/variance/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "variance.price_volume_mix",
        "status": "context_only",
        "when_to_use": "Compare the same total variance under progressively richer Price / Units / Mix decompositions before deciding which breakdown is useful for the client story.",
        "required_parameters": [
          "metric"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "png",
            "formats": [
              "png"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "variance / total_by_dimension_bridge",
      "plugin_source": "variance-analysis",
      "plugin_source_label": "Variance Analysis",
      "source": "../variance/variance/total_by_dimension_bridge.png",
      "output": "variance__total_by_dimension_bridge.png",
      "artifact_type": "png",
      "dimensions": {
        "width": 1280,
        "height": 964
      },
      "stats": {
        "byte_count": 72409,
        "non_white_ratio": 0.03318529564315353,
        "edge_ink_ratio": 0.057053009883198565,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.1984375,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": null,
        "grammar": null,
        "metrics": "Value_LC",
        "dimensions": "Company",
        "periods": "_Aug-2016, _Aug-2017",
        "trace_widths": null,
        "source_reference": null
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Total By Dimension Bridge for Value LC",
          "Aug 2017 vs Aug 2016, through 2017 08 27"
        ],
        "who": "Mexico hair color",
        "what": "Total By Dimension Bridge for Value LC",
        "when": "Aug 2017 vs Aug 2016, through 2017 08 27",
        "source": "../variance/variance/total_by_dimension_bridge_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../variance/variance/total_by_dimension_bridge.png"
        },
        {
          "label": "context",
          "href": "../variance/variance/total_by_dimension_bridge_context.json"
        },
        {
          "label": "data",
          "href": "../variance/variance/total_by_dimension_bridge.csv"
        },
        {
          "label": "manifest",
          "href": "../variance/variance/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../variance/variance/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "variance.total_by_dimension_bridge",
        "status": "context_only",
        "when_to_use": "Show how the total metric movement is split across one fixed dimension, one row per dimension member.",
        "required_parameters": [
          "metric",
          "dimension",
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "png",
            "formats": [
              "png"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "variance / root_cause_total_bridge",
      "plugin_source": "variance-analysis",
      "plugin_source_label": "Variance Analysis",
      "source": "../variance/variance/root_cause_total_bridge.png",
      "output": "variance__root_cause_total_bridge.png",
      "artifact_type": "png",
      "dimensions": {
        "width": 1280,
        "height": 706
      },
      "stats": {
        "byte_count": 45892,
        "non_white_ratio": 0.05551854638810198,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": null,
        "grammar": null,
        "metrics": "Value_LC",
        "dimensions": null,
        "periods": null,
        "trace_widths": null,
        "source_reference": null
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Sales variable-dimension root-cause total variance | LC",
          "_Aug-2017 vs _Aug-2016, year to date"
        ],
        "who": "Mexico hair color",
        "what": "Sales variable-dimension root-cause total variance | LC",
        "when": "_Aug-2017 vs _Aug-2016, year to date",
        "source": "../variance/variance/root_cause_total_bridge_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../variance/variance/root_cause_total_bridge.png"
        },
        {
          "label": "context",
          "href": "../variance/variance/root_cause_total_bridge_context.json"
        },
        {
          "label": "data",
          "href": "../variance/variance/root_cause_total_bridge.csv"
        },
        {
          "label": "manifest",
          "href": "../variance/variance/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../variance/variance/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "variance.root_cause_total_bridge",
        "status": "context_only",
        "when_to_use": "root_cause_total_bridge",
        "required_parameters": [
          "metric"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "png",
            "formats": [
              "png"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "variance / root_cause_component_bridge",
      "plugin_source": "variance-analysis",
      "plugin_source_label": "Variance Analysis",
      "source": "../variance/variance/root_cause_component_bridge.png",
      "output": "variance__root_cause_component_bridge.png",
      "artifact_type": "png",
      "dimensions": {
        "width": 1280,
        "height": 684
      },
      "stats": {
        "byte_count": 51091,
        "non_white_ratio": 0.04413262975146199,
        "edge_ink_ratio": 0.07001366120218579,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.21354166666666666,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": null,
        "grammar": null,
        "metrics": "Value_LC",
        "dimensions": null,
        "periods": null,
        "trace_widths": null,
        "source_reference": null
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Root Cause Component Bridge for Value LC",
          "Aug 2017 vs Aug 2016, through 2017 08 27"
        ],
        "who": "Mexico hair color",
        "what": "Root Cause Component Bridge for Value LC",
        "when": "Aug 2017 vs Aug 2016, through 2017 08 27",
        "source": "../variance/variance/root_cause_component_bridge_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../variance/variance/root_cause_component_bridge.png"
        },
        {
          "label": "context",
          "href": "../variance/variance/root_cause_component_bridge_context.json"
        },
        {
          "label": "data",
          "href": "../variance/variance/root_cause_component_bridge.csv"
        },
        {
          "label": "manifest",
          "href": "../variance/variance/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../variance/variance/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "variance.root_cause_component_bridge",
        "status": "context_only",
        "when_to_use": "root_cause_component_bridge",
        "required_parameters": [
          "metric"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "png",
            "formats": [
              "png"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "variance / exploded_variance_bridge",
      "plugin_source": "variance-analysis",
      "plugin_source_label": "Variance Analysis",
      "source": "../variance/variance/exploded_variance_bridge.png",
      "output": "variance__exploded_variance_bridge.png",
      "artifact_type": "png",
      "dimensions": {
        "width": 1600,
        "height": 900
      },
      "stats": {
        "byte_count": 110884,
        "non_white_ratio": 0.04528472222222222,
        "edge_ink_ratio": 0.03220968752797923,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.09993055555555555,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": null,
        "grammar": null,
        "metrics": "Value_LC",
        "dimensions": null,
        "periods": null,
        "trace_widths": null,
        "source_reference": null
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Exploded Variance Bridge for Value LC",
          "Aug 2017 vs Aug 2016, through 2017 08 27"
        ],
        "who": "Mexico hair color",
        "what": "Exploded Variance Bridge for Value LC",
        "when": "Aug 2017 vs Aug 2016, through 2017 08 27",
        "source": "../variance/variance/exploded_variance_bridge_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../variance/variance/exploded_variance_bridge.png"
        },
        {
          "label": "context",
          "href": "../variance/variance/exploded_variance_bridge_context.json"
        },
        {
          "label": "data",
          "href": "../variance/variance/exploded_variance_bridge_chart_data.json"
        },
        {
          "label": "manifest",
          "href": "../variance/variance/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../variance/variance/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "native_payload": "exploded_variance_bridge_spec.json",
        "chart_data": "exploded_variance_bridge_chart_data.json",
        "capability_id": "variance.exploded_variance_bridge",
        "status": "context_only",
        "when_to_use": "Show one fixed parent-dimension total-variance bridge and up to two fixed child/decomposition-dimension drilldowns for selected parent rows.",
        "required_parameters": [
          "metric",
          "parent_dimension",
          "child_dimension"
        ],
        "optional_parameters": [],
        "editable_slide_target": "pptx",
        "can_insert_in_ppt": true,
        "requires_image_interpretation": false,
        "one_page": true,
        "max_drilldowns": 2,
        "ppt_composition": {
          "insert_mode": "single_slide",
          "fallback_render": "exploded_variance_bridge.png",
          "recommended_slide_aspect_ratio": "16:9"
        },
        "outputs": [
          {
            "artifact_type": "png",
            "formats": [
              "png"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "variance / root_cause_exploded_bridge",
      "plugin_source": "variance-analysis",
      "plugin_source_label": "Variance Analysis",
      "source": "../variance/variance/root_cause_exploded_bridge.png",
      "output": "variance__root_cause_exploded_bridge.png",
      "artifact_type": "png",
      "dimensions": {
        "width": 2200,
        "height": 900
      },
      "stats": {
        "byte_count": 136108,
        "non_white_ratio": 0.04297878787878788,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": null,
        "grammar": null,
        "metrics": "Value_LC",
        "dimensions": null,
        "periods": null,
        "trace_widths": null,
        "source_reference": null
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Root-cause exploded bridge for Value LC",
          "_Aug-2017 vs _Aug-2016, year to date"
        ],
        "who": "Mexico hair color",
        "what": "Root-cause exploded bridge for Value LC",
        "when": "_Aug-2017 vs _Aug-2016, year to date",
        "source": "../variance/variance/root_cause_exploded_bridge_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../variance/variance/root_cause_exploded_bridge.png"
        },
        {
          "label": "context",
          "href": "../variance/variance/root_cause_exploded_bridge_context.json"
        },
        {
          "label": "data",
          "href": "../variance/variance/root_cause_exploded_bridge_chart_data.json"
        },
        {
          "label": "manifest",
          "href": "../variance/variance/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../variance/variance/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "variance.root_cause_exploded_bridge",
        "status": "context_only",
        "when_to_use": "Show a variable mixed-dimension root-cause bridge with a nested root-cause drilldown for a selected driver row.",
        "required_parameters": [
          "metric",
          "root_cause_parent_artifact",
          "parent_row_number"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "png",
            "formats": [
              "png"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "period / comparison_table",
      "plugin_source": "period-comparison",
      "plugin_source_label": "Period Comparison",
      "source": "../period/period/comparison_table.html",
      "output": "period__comparison_table.png",
      "artifact_type": "table",
      "dimensions": {
        "width": 700,
        "height": 337
      },
      "stats": {
        "byte_count": 27805,
        "non_white_ratio": 0.0712166172106825,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "period_comparison.comparison_table",
        "grammar": "period_comparison.comparison_table",
        "metrics": "Sales",
        "dimensions": "Company, Brand, Channel +3",
        "periods": "PY, AC",
        "trace_widths": null,
        "source_reference": "comparison_table"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Sales in m",
          "AC vs PY"
        ],
        "who": "Mexico hair color",
        "what": "Sales in m",
        "when": "AC vs PY",
        "source": "../period/period/comparison_table_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../period/period/comparison_table.html"
        },
        {
          "label": "context",
          "href": "../period/period/comparison_table_chart_context.json"
        },
        {
          "label": "data",
          "href": "../period/period/comparison_table_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../period/period/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../period/period/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "period_comparison.comparison_table",
        "status": "context_only",
        "when_to_use": "period_comparison.comparison_table",
        "required_parameters": [
          "metric",
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "period / time_series_table",
      "plugin_source": "period-comparison",
      "plugin_source_label": "Period Comparison",
      "source": "../period/period/time_series_table.html",
      "output": "period__time_series_table.png",
      "artifact_type": "table",
      "dimensions": {
        "width": 668,
        "height": 460
      },
      "stats": {
        "byte_count": 37678,
        "non_white_ratio": 0.07177167404321791,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "period_comparison.time_series_table",
        "grammar": "period_comparison.time_series_table",
        "metrics": "Sales",
        "dimensions": "Company, Brand, Channel +3",
        "periods": "PY, AC",
        "trace_widths": null,
        "source_reference": "time_series_table"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Sales in m",
          "AC vs PY"
        ],
        "who": "Mexico hair color",
        "what": "Sales in m",
        "when": "AC vs PY",
        "source": "../period/period/time_series_table_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../period/period/time_series_table.html"
        },
        {
          "label": "context",
          "href": "../period/period/time_series_table_chart_context.json"
        },
        {
          "label": "data",
          "href": "../period/period/time_series_table_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../period/period/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../period/period/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "period_comparison.time_series_table",
        "status": "context_only",
        "when_to_use": "period_comparison.time_series_table",
        "required_parameters": [
          "metric",
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "period / year_over_year_by_recency_window",
      "plugin_source": "period-comparison",
      "plugin_source_label": "Period Comparison",
      "source": "../period/period/year_over_year_by_period.html",
      "output": "period__year_over_year_by_period.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1400,
        "height": 900
      },
      "stats": {
        "byte_count": 36588,
        "non_white_ratio": 0.010033333333333333,
        "edge_ink_ratio": 0.02639010614470737,
        "crop_risk_ink_ratio": 0.034444444444444444,
        "top_edge_ink_ratio": 0.05587301587301587,
        "right_edge_ink_ratio": 0.0011111111111111111,
        "bottom_edge_ink_ratio": 0.02873015873015873,
        "left_edge_ink_ratio": 0.0011111111111111111
      },
      "quality_flags": [
        {
          "label": "crop risk",
          "detail": "High ink near top/right image edges; inspect for cropping."
        }
      ],
      "context_summary": {
        "capability": "period_comparison.by_period",
        "grammar": "period_comparison.by_period",
        "metrics": "Value_LC",
        "dimensions": "Company, Brand, Channel +3",
        "periods": "PY, AC",
        "trace_widths": null,
        "source_reference": "year_over_year_by_period"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Weekly Average Sales by Recency Window in m",
          "AC vs PY, through 2017-08-27"
        ],
        "who": "Mexico hair color",
        "what": "Weekly Average Sales by Recency Window in m",
        "when": "AC vs PY, through 2017-08-27",
        "source": "../period/period/year_over_year_by_period.html"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../period/period/year_over_year_by_period.html"
        },
        {
          "label": "context",
          "href": "../period/period/source_pack/contexts/period_comparison_context.json"
        },
        {
          "label": "data",
          "href": "../period/period/period_comparison_by_period.csv"
        },
        {
          "label": "manifest",
          "href": "../period/period/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../period/period/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "period_comparison.by_period",
        "status": "context_only",
        "when_to_use": "period_comparison",
        "required_parameters": [
          "source_file",
          "metric"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "period / year_over_year_by_recency_window_small_multiples",
      "plugin_source": "period-comparison",
      "plugin_source_label": "Period Comparison",
      "source": "../period/period/year_over_year_by_period_small_multiples.html",
      "output": "period__year_over_year_by_period_small_multiples.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 2220,
        "height": 1300
      },
      "stats": {
        "byte_count": 60342,
        "non_white_ratio": 0.010432432432432432,
        "edge_ink_ratio": 0.009466778213200652,
        "crop_risk_ink_ratio": 0.018225524475524474,
        "top_edge_ink_ratio": 0.027997227997227998,
        "right_edge_ink_ratio": 0.0015384615384615385,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0015384615384615385
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "period_comparison.by_period",
        "grammar": "period_comparison.by_period",
        "metrics": "Value_LC",
        "dimensions": "Company, Brand, Channel +3",
        "periods": "PY, AC",
        "trace_widths": null,
        "source_reference": "year_over_year_by_period..."
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Weekly Average Sales by Recency Window in m by Type",
          "AC vs PY, through 2017-08-27"
        ],
        "who": "Mexico hair color",
        "what": "Weekly Average Sales by Recency Window in m by Type",
        "when": "AC vs PY, through 2017-08-27",
        "source": "../period/period/year_over_year_by_period_small_multiples.html"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../period/period/year_over_year_by_period_small_multiples.html"
        },
        {
          "label": "context",
          "href": "../period/period/source_pack/contexts/period_comparison_context.json"
        },
        {
          "label": "data",
          "href": "../period/period/period_comparison_by_period.csv"
        },
        {
          "label": "manifest",
          "href": "../period/period/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../period/period/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "period_comparison.by_period",
        "status": "context_only",
        "when_to_use": "period_comparison",
        "required_parameters": [
          "source_file",
          "metric"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "period / year_over_year_column",
      "plugin_source": "period-comparison",
      "plugin_source_label": "Period Comparison",
      "source": "../period/period/year_over_year_column.html",
      "output": "period__year_over_year_column.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1400,
        "height": 900
      },
      "stats": {
        "byte_count": 34534,
        "non_white_ratio": 0.1552388888888889,
        "edge_ink_ratio": 0.03369364105560425,
        "crop_risk_ink_ratio": 0.03400966183574879,
        "top_edge_ink_ratio": 0.05587301587301587,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.05182539682539682,
        "left_edge_ink_ratio": 0.0033333333333333335
      },
      "quality_flags": [
        {
          "label": "crop risk",
          "detail": "High ink near top/right image edges; inspect for cropping."
        }
      ],
      "context_summary": {
        "capability": "period_comparison.multitier_column",
        "grammar": "period_comparison.multitier_column",
        "metrics": "Value_LC",
        "dimensions": "Company, Brand, Channel +3",
        "periods": "PY, AC",
        "trace_widths": "0.048, 0.68",
        "source_reference": "year_over_year_column"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Sales in m",
          "AC vs PY, through 2017-08-27"
        ],
        "who": "Mexico hair color",
        "what": "Sales in m",
        "when": "AC vs PY, through 2017-08-27",
        "source": "../period/period/year_over_year_column.html"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../period/period/year_over_year_column.html"
        },
        {
          "label": "context",
          "href": "../period/period/source_pack/contexts/period_comparison_context.json"
        },
        {
          "label": "data",
          "href": "../period/period/period_comparison_by_period.csv"
        },
        {
          "label": "manifest",
          "href": "../period/period/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../period/period/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "period_comparison.multitier_column",
        "status": "context_only",
        "when_to_use": "period_comparison",
        "required_parameters": [
          "source_file",
          "metric"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "period / year_over_year_column_small_multiples",
      "plugin_source": "period-comparison",
      "plugin_source_label": "Period Comparison",
      "source": "../period/period/year_over_year_column_small_multiples.html",
      "output": "period__year_over_year_column_small_multiples.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 2220,
        "height": 1300
      },
      "stats": {
        "byte_count": 51062,
        "non_white_ratio": 0.08757588357588357,
        "edge_ink_ratio": 0.009180573290475981,
        "crop_risk_ink_ratio": 0.01765734265734266,
        "top_edge_ink_ratio": 0.027997227997227998,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0015384615384615385
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "period_comparison.multitier_column",
        "grammar": "period_comparison.multitier_column",
        "metrics": "Value_LC",
        "dimensions": "Company, Brand, Channel +3",
        "periods": "PY, AC",
        "trace_widths": "0.68",
        "source_reference": "year_over_year_column_sm..."
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Sales in m by Type",
          "AC vs PY, through 2017-08-27"
        ],
        "who": "Mexico hair color",
        "what": "Sales in m by Type",
        "when": "AC vs PY, through 2017-08-27",
        "source": "../period/period/year_over_year_column_small_multiples.html"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../period/period/year_over_year_column_small_multiples.html"
        },
        {
          "label": "context",
          "href": "../period/period/source_pack/contexts/period_comparison_context.json"
        },
        {
          "label": "data",
          "href": "../period/period/period_comparison_by_period.csv"
        },
        {
          "label": "manifest",
          "href": "../period/period/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../period/period/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "period_comparison.multitier_column",
        "status": "context_only",
        "when_to_use": "period_comparison",
        "required_parameters": [
          "source_file",
          "metric"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "period / year_over_year_line",
      "plugin_source": "period-comparison",
      "plugin_source_label": "Period Comparison",
      "source": "../period/period/year_over_year_line.html",
      "output": "period__year_over_year_line.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1400,
        "height": 900
      },
      "stats": {
        "byte_count": 49469,
        "non_white_ratio": 0.018664285714285713,
        "edge_ink_ratio": 0.034789171292238776,
        "crop_risk_ink_ratio": 0.034444444444444444,
        "top_edge_ink_ratio": 0.05587301587301587,
        "right_edge_ink_ratio": 0.0011111111111111111,
        "bottom_edge_ink_ratio": 0.05611111111111111,
        "left_edge_ink_ratio": 0.0011111111111111111
      },
      "quality_flags": [
        {
          "label": "crop risk",
          "detail": "High ink near top/right image edges; inspect for cropping."
        }
      ],
      "context_summary": {
        "capability": "period_comparison.trend",
        "grammar": "period_comparison.trend",
        "metrics": "Value_LC",
        "dimensions": "Company, Brand, Channel +3",
        "periods": "PY, AC",
        "trace_widths": null,
        "source_reference": "year_over_year_line"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Sales in m",
          "AC vs PY, through 2017-08-27"
        ],
        "who": "Mexico hair color",
        "what": "Sales in m",
        "when": "AC vs PY, through 2017-08-27",
        "source": "../period/period/year_over_year_line.html"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../period/period/year_over_year_line.html"
        },
        {
          "label": "context",
          "href": "../period/period/source_pack/contexts/period_comparison_context.json"
        },
        {
          "label": "data",
          "href": "../period/period/period_comparison_by_period.csv"
        },
        {
          "label": "manifest",
          "href": "../period/period/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../period/period/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "period_comparison.trend",
        "status": "context_only",
        "when_to_use": "period_comparison",
        "required_parameters": [
          "source_file",
          "metric"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "period / year_over_year_small_multiples",
      "plugin_source": "period-comparison",
      "plugin_source_label": "Period Comparison",
      "source": "../period/period/year_over_year_small_multiples.html",
      "output": "period__year_over_year_small_multiples.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 2220,
        "height": 1300
      },
      "stats": {
        "byte_count": 69466,
        "non_white_ratio": 0.013054400554400554,
        "edge_ink_ratio": 0.009466778213200652,
        "crop_risk_ink_ratio": 0.018225524475524474,
        "top_edge_ink_ratio": 0.027997227997227998,
        "right_edge_ink_ratio": 0.0015384615384615385,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0015384615384615385
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "period_comparison.by_period",
        "grammar": "period_comparison.by_period",
        "metrics": "Value_LC",
        "dimensions": "Company, Brand, Channel +3",
        "periods": "PY, AC",
        "trace_widths": null,
        "source_reference": "year_over_year_small_mul..."
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Sales in m by Type",
          "AC vs PY, through 2017-08-27"
        ],
        "who": "Mexico hair color",
        "what": "Sales in m by Type",
        "when": "AC vs PY, through 2017-08-27",
        "source": "../period/period/year_over_year_small_multiples.html"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../period/period/year_over_year_small_multiples.html"
        },
        {
          "label": "context",
          "href": "../period/period/year_over_year_small_multiples_context.json"
        },
        {
          "label": "data",
          "href": "../period/period/year_over_year_small_multiples_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../period/period/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../period/period/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "period_comparison.by_period",
        "status": "context_only",
        "when_to_use": "period_comparison_small_multiples",
        "required_parameters": [
          "dimension"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "period / year_over_year_waterfall",
      "plugin_source": "period-comparison",
      "plugin_source_label": "Period Comparison",
      "source": "../period/period/year_over_year_waterfall.html",
      "output": "period__year_over_year_waterfall.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1400,
        "height": 900
      },
      "stats": {
        "byte_count": 34376,
        "non_white_ratio": 0.16393809523809524,
        "edge_ink_ratio": 0.03067484662576687,
        "crop_risk_ink_ratio": 0.03400966183574879,
        "top_edge_ink_ratio": 0.05587301587301587,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.04341269841269841,
        "left_edge_ink_ratio": 0.0011111111111111111
      },
      "quality_flags": [
        {
          "label": "crop risk",
          "detail": "High ink near top/right image edges; inspect for cropping."
        }
      ],
      "context_summary": {
        "capability": "period_comparison.horizontal_waterfall",
        "grammar": "period_comparison.horizontal_waterfall",
        "metrics": "Value_LC",
        "dimensions": "Company, Brand, Channel +3",
        "periods": "PY, AC",
        "trace_widths": "0.048, 0.68",
        "source_reference": "year_over_year_waterfall"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Sales in m",
          "AC vs PY, through 2017-08-27"
        ],
        "who": "Mexico hair color",
        "what": "Sales in m",
        "when": "AC vs PY, through 2017-08-27",
        "source": "../period/period/year_over_year_waterfall.html"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../period/period/year_over_year_waterfall.html"
        },
        {
          "label": "context",
          "href": "../period/period/source_pack/contexts/period_comparison_context.json"
        },
        {
          "label": "data",
          "href": "../period/period/period_comparison_by_period.csv"
        },
        {
          "label": "manifest",
          "href": "../period/period/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../period/period/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "period_comparison.horizontal_waterfall",
        "status": "context_only",
        "when_to_use": "period_comparison",
        "required_parameters": [
          "source_file",
          "metric"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "period / year_over_year_waterfall_small_multiples",
      "plugin_source": "period-comparison",
      "plugin_source_label": "Period Comparison",
      "source": "../period/period/year_over_year_waterfall_small_multiples.html",
      "output": "period__year_over_year_waterfall_small_multiples.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 2220,
        "height": 1300
      },
      "stats": {
        "byte_count": 57819,
        "non_white_ratio": 0.05848475398475399,
        "edge_ink_ratio": 0.024800757342257056,
        "crop_risk_ink_ratio": 0.01765734265734266,
        "top_edge_ink_ratio": 0.027997227997227998,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.08550295857988166
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "period_comparison.horizontal_waterfall",
        "grammar": "period_comparison.horizontal_waterfall",
        "metrics": "Value_LC",
        "dimensions": "Company, Brand, Channel +3",
        "periods": "PY, AC",
        "trace_widths": "0.68",
        "source_reference": "year_over_year_waterfall..."
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Sales in m by Type",
          "AC vs PY, through 2017-08-27"
        ],
        "who": "Mexico hair color",
        "what": "Sales in m by Type",
        "when": "AC vs PY, through 2017-08-27",
        "source": "../period/period/year_over_year_waterfall_small_multiples.html"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../period/period/year_over_year_waterfall_small_multiples.html"
        },
        {
          "label": "context",
          "href": "../period/period/source_pack/contexts/period_comparison_context.json"
        },
        {
          "label": "data",
          "href": "../period/period/period_comparison_by_period.csv"
        },
        {
          "label": "manifest",
          "href": "../period/period/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../period/period/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "period_comparison.horizontal_waterfall",
        "status": "context_only",
        "when_to_use": "period_comparison",
        "required_parameters": [
          "source_file",
          "metric"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "period / year_over_year_dot",
      "plugin_source": "period-comparison",
      "plugin_source_label": "Period Comparison",
      "source": "../period/period/year_over_year_dot.html",
      "output": "period__year_over_year_dot.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1400,
        "height": 900
      },
      "stats": {
        "byte_count": 54720,
        "non_white_ratio": 0.014682539682539682,
        "edge_ink_ratio": 0.017138961924237996,
        "crop_risk_ink_ratio": 0.03400966183574879,
        "top_edge_ink_ratio": 0.05587301587301587,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [
        {
          "label": "crop risk",
          "detail": "High ink near top/right image edges; inspect for cropping."
        }
      ],
      "context_summary": {
        "capability": "period_comparison.dot",
        "grammar": "period_comparison.dot",
        "metrics": "Value_LC",
        "dimensions": "Company, Brand, Channel +3",
        "periods": "PY, AC",
        "trace_widths": null,
        "source_reference": "year_over_year_dot"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Sales in m by Company",
          "AC vs PY, through 2017-08-27"
        ],
        "who": "Mexico hair color",
        "what": "Sales in m by Company",
        "when": "AC vs PY, through 2017-08-27",
        "source": "../period/period/year_over_year_dot.html"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../period/period/year_over_year_dot.html"
        },
        {
          "label": "context",
          "href": "../period/period/source_pack/contexts/period_comparison_context.json"
        },
        {
          "label": "data",
          "href": "../period/period/period_comparison_by_period.csv"
        },
        {
          "label": "manifest",
          "href": "../period/period/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../period/period/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "period_comparison.dot",
        "status": "context_only",
        "when_to_use": "period_comparison",
        "required_parameters": [
          "source_file",
          "metric"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "period / year_over_year_dot_small_multiples",
      "plugin_source": "period-comparison",
      "plugin_source_label": "Period Comparison",
      "source": "../period/period/year_over_year_dot_small_multiples.html",
      "output": "period__year_over_year_dot_small_multiples.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 2600,
        "height": 780
      },
      "stats": {
        "byte_count": 80105,
        "non_white_ratio": 0.015091715976331362,
        "edge_ink_ratio": 0.011077158135981665,
        "crop_risk_ink_ratio": 0.0220625528317836,
        "top_edge_ink_ratio": 0.028681318681318683,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [
        {
          "label": "crop risk",
          "detail": "High ink near top/right image edges; inspect for cropping."
        }
      ],
      "context_summary": {
        "capability": "period_comparison.dot",
        "grammar": "period_comparison.dot",
        "metrics": "Value_LC",
        "dimensions": "Company, Brand, Channel +3",
        "periods": "PY, AC",
        "trace_widths": null,
        "source_reference": "year_over_year_dot_small..."
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Sales in m by Company and Type",
          "AC vs PY, through 2017-08-27"
        ],
        "who": "Mexico hair color",
        "what": "Sales in m by Company and Type",
        "when": "AC vs PY, through 2017-08-27",
        "source": "../period/period/year_over_year_dot_small_multiples.html"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../period/period/year_over_year_dot_small_multiples.html"
        },
        {
          "label": "context",
          "href": "../period/period/source_pack/contexts/period_comparison_context.json"
        },
        {
          "label": "data",
          "href": "../period/period/period_comparison_by_period.csv"
        },
        {
          "label": "manifest",
          "href": "../period/period/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../period/period/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "period_comparison.dot",
        "status": "context_only",
        "when_to_use": "period_comparison",
        "required_parameters": [
          "source_file",
          "metric"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "period / year_over_year_slope",
      "plugin_source": "period-comparison",
      "plugin_source_label": "Period Comparison",
      "source": "../period/period/year_over_year_slope.html",
      "output": "period__year_over_year_slope.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 760,
        "height": 620
      },
      "stats": {
        "byte_count": 19822,
        "non_white_ratio": 0.02120967741935484,
        "edge_ink_ratio": 0.0282041910331384,
        "crop_risk_ink_ratio": 0.05591787439613526,
        "top_edge_ink_ratio": 0.10153508771929824,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [
        {
          "label": "crop risk",
          "detail": "High ink near top/right image edges; inspect for cropping."
        }
      ],
      "context_summary": {
        "capability": "period_comparison.slope",
        "grammar": "period_comparison.slope",
        "metrics": "Value_LC",
        "dimensions": "Company, Brand, Channel +3",
        "periods": "PY, AC",
        "trace_widths": null,
        "source_reference": "year_over_year_slope"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Sales in m by Channel",
          "AC vs PY, through 2017-08-27"
        ],
        "who": "Mexico hair color",
        "what": "Sales in m by Channel",
        "when": "AC vs PY, through 2017-08-27",
        "source": "../period/period/year_over_year_slope.html"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../period/period/year_over_year_slope.html"
        },
        {
          "label": "context",
          "href": "../period/period/source_pack/contexts/period_comparison_context.json"
        },
        {
          "label": "data",
          "href": "../period/period/period_comparison_by_period.csv"
        },
        {
          "label": "manifest",
          "href": "../period/period/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../period/period/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "period_comparison.slope",
        "status": "context_only",
        "when_to_use": "period_comparison",
        "required_parameters": [
          "source_file",
          "metric"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "period / year_over_year_slope_small_multiples",
      "plugin_source": "period-comparison",
      "plugin_source_label": "Period Comparison",
      "source": "../period/period/year_over_year_slope_small_multiples.html",
      "output": "period__year_over_year_slope_small_multiples.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1360,
        "height": 560
      },
      "stats": {
        "byte_count": 28390,
        "non_white_ratio": 0.013156512605042017,
        "edge_ink_ratio": 0.020052356020942408,
        "crop_risk_ink_ratio": 0.03989583333333333,
        "top_edge_ink_ratio": 0.0563235294117647,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [
        {
          "label": "crop risk",
          "detail": "High ink near top/right image edges; inspect for cropping."
        }
      ],
      "context_summary": {
        "capability": "period_comparison.slope",
        "grammar": "period_comparison.slope",
        "metrics": "Value_LC",
        "dimensions": "Company, Brand, Channel +3",
        "periods": "PY, AC",
        "trace_widths": null,
        "source_reference": "year_over_year_slope_sma..."
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Sales in m by Type",
          "AC vs PY, through 2017-08-27"
        ],
        "who": "Mexico hair color",
        "what": "Sales in m by Type",
        "when": "AC vs PY, through 2017-08-27",
        "source": "../period/period/year_over_year_slope_small_multiples.html"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../period/period/year_over_year_slope_small_multiples.html"
        },
        {
          "label": "context",
          "href": "../period/period/source_pack/contexts/period_comparison_context.json"
        },
        {
          "label": "data",
          "href": "../period/period/period_comparison_by_period.csv"
        },
        {
          "label": "manifest",
          "href": "../period/period/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../period/period/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "period_comparison.slope",
        "status": "context_only",
        "when_to_use": "period_comparison",
        "required_parameters": [
          "source_file",
          "metric"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_comparison / bar",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_comparison/mix_comparison/bar.html",
      "output": "mix_comparison__bar.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1051,
        "height": 401
      },
      "stats": {
        "byte_count": 24567,
        "non_white_ratio": 0.18550673743804144,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.bar",
        "grammar": "bar",
        "metrics": "Sales",
        "dimensions": "Brand",
        "periods": "_Aug-2016, _Aug-2017",
        "trace_widths": "0.9",
        "source_reference": "bar"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Bar for Sales",
          "infer current or all"
        ],
        "who": "Mexico hair color",
        "what": "Bar for Sales",
        "when": "infer current or all",
        "source": "../mix_comparison/mix_comparison/bar_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_comparison/mix_comparison/bar.html"
        },
        {
          "label": "context",
          "href": "../mix_comparison/mix_comparison/bar_chart_context.json"
        },
        {
          "label": "data",
          "href": "../mix_comparison/mix_comparison/bar_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_comparison/mix_comparison/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_comparison/mix_comparison/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.bar",
        "status": "context_only",
        "when_to_use": "mix.bar",
        "required_parameters": [
          "metric",
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_current / stacked_bar",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_current/mix_regular/stacked_bar.html",
      "output": "mix_current__mix_regular__stacked_bar.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1051,
        "height": 530
      },
      "stats": {
        "byte_count": 41668,
        "non_white_ratio": 0.07895265964131196,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.stacked_bar",
        "grammar": "stacked bar",
        "metrics": "Sales",
        "dimensions": "Company, Channel",
        "periods": "AC",
        "trace_widths": "0.9",
        "source_reference": "stacked_bar"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Sales in mEUR by Company and Channel",
          "AC"
        ],
        "who": "Mexico hair color",
        "what": "Sales in mEUR by Company and Channel",
        "when": "AC",
        "source": "../mix_current/mix_regular/stacked_bar_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_current/mix_regular/stacked_bar.html"
        },
        {
          "label": "context",
          "href": "../mix_current/mix_regular/stacked_bar_chart_context.json"
        },
        {
          "label": "data",
          "href": "../mix_current/mix_regular/stacked_bar_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_current/mix_regular/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_current/mix_regular/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.stacked_bar",
        "status": "context_only",
        "when_to_use": "mix.stacked_bar",
        "required_parameters": [
          "metric",
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_comparison / bar_small_multiples",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_comparison/mix_comparison/bar_small_multiples.html",
      "output": "mix_comparison__bar_small_multiples.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1576,
        "height": 677
      },
      "stats": {
        "byte_count": 60819,
        "non_white_ratio": 0.08493915377636482,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.bar",
        "grammar": "bar",
        "metrics": "Sales",
        "dimensions": "Brand, Channel",
        "periods": "_Aug-2016, _Aug-2017",
        "trace_widths": "0.9",
        "source_reference": "bar_small_multiples"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Bar Small Multiples for Sales",
          "infer current or all"
        ],
        "who": "Mexico hair color",
        "what": "Bar Small Multiples for Sales",
        "when": "infer current or all",
        "source": "../mix_comparison/mix_comparison/bar_small_multiples_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_comparison/mix_comparison/bar_small_multiples.html"
        },
        {
          "label": "context",
          "href": "../mix_comparison/mix_comparison/bar_small_multiples_chart_context.json"
        },
        {
          "label": "data",
          "href": "../mix_comparison/mix_comparison/bar_small_multiples_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_comparison/mix_comparison/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_comparison/mix_comparison/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.bar",
        "status": "context_only",
        "when_to_use": "mix.bar",
        "required_parameters": [
          "metric",
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_current / stacked_bar_small_multiples",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_current/mix_regular/stacked_bar_small_multiples.html",
      "output": "mix_current__mix_regular__stacked_bar_small_multiples.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 2220,
        "height": 1380
      },
      "stats": {
        "byte_count": 74950,
        "non_white_ratio": 0.02517756887322105,
        "edge_ink_ratio": 0.0051762730833799665,
        "crop_risk_ink_ratio": 0.010235042735042735,
        "top_edge_ink_ratio": 0.016597366597366596,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.00011148272017837236
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.stacked_bar",
        "grammar": "stacked bar",
        "metrics": "Sales",
        "dimensions": "Company, Channel, Type",
        "periods": "AC",
        "trace_widths": "0.9",
        "source_reference": "stacked_bar_small_multip..."
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Sales in mEUR by Company, Channel and Type",
          "AC"
        ],
        "who": "Mexico hair color",
        "what": "Sales in mEUR by Company, Channel and Type",
        "when": "AC",
        "source": "../mix_current/mix_regular/stacked_bar_small_multiples_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_current/mix_regular/stacked_bar_small_multiples.html"
        },
        {
          "label": "context",
          "href": "../mix_current/mix_regular/stacked_bar_small_multiples_chart_context.json"
        },
        {
          "label": "data",
          "href": "../mix_current/mix_regular/stacked_bar_small_multiples_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_current/mix_regular/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_current/mix_regular/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.stacked_bar",
        "status": "context_only",
        "when_to_use": "mix.stacked_bar",
        "required_parameters": [
          "metric",
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_comparison / related_metrics_bar",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_comparison/mix_comparison/related_metrics_bar.html",
      "output": "mix_comparison__related_metrics_bar.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1051,
        "height": 401
      },
      "stats": {
        "byte_count": 32696,
        "non_white_ratio": 0.17620079202564473,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.stacked_bar_overlay",
        "grammar": "bar with marker",
        "metrics": "Sales, Sales Growth Rate",
        "dimensions": "Brand",
        "periods": "_Aug-2016, _Aug-2017",
        "trace_widths": "0.9",
        "source_reference": "related_metrics_bar"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Related Metrics Bar for Sales, Sales Growth Rate",
          "infer current or all"
        ],
        "who": "Mexico hair color",
        "what": "Related Metrics Bar for Sales, Sales Growth Rate",
        "when": "infer current or all",
        "source": "../mix_comparison/mix_comparison/related_metrics_bar_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_comparison/mix_comparison/related_metrics_bar.html"
        },
        {
          "label": "context",
          "href": "../mix_comparison/mix_comparison/related_metrics_bar_chart_context.json"
        },
        {
          "label": "data",
          "href": "../mix_comparison/mix_comparison/related_metrics_bar_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_comparison/mix_comparison/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_comparison/mix_comparison/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.stacked_bar_overlay",
        "status": "context_only",
        "when_to_use": "mix.stacked_bar_overlay",
        "required_parameters": [
          "metric",
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_comparison / related_metrics_bar_small_multiples",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_comparison/mix_comparison/related_metrics_bar_small_multiples.html",
      "output": "mix_comparison__related_metrics_bar_small_multiples.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1576,
        "height": 677
      },
      "stats": {
        "byte_count": 74887,
        "non_white_ratio": 0.08437586695558938,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.stacked_bar_overlay",
        "grammar": "bar with marker",
        "metrics": "Sales, Sales Growth Rate",
        "dimensions": "Brand, Channel",
        "periods": "_Aug-2016, _Aug-2017",
        "trace_widths": "0.9",
        "source_reference": "related_metrics_bar_smal..."
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Related Metrics Bar Small Multiples for Sales, Sales Growth Rate",
          "infer current or all"
        ],
        "who": "Mexico hair color",
        "what": "Related Metrics Bar Small Multiples for Sales, Sales Growth Rate",
        "when": "infer current or all",
        "source": "../mix_comparison/mix_comparison/related_metrics_bar_small_multiples_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_comparison/mix_comparison/related_metrics_bar_small_multiples.html"
        },
        {
          "label": "context",
          "href": "../mix_comparison/mix_comparison/related_metrics_bar_small_multiples_chart_context.json"
        },
        {
          "label": "data",
          "href": "../mix_comparison/mix_comparison/related_metrics_bar_small_multiples_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_comparison/mix_comparison/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_comparison/mix_comparison/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.stacked_bar_overlay",
        "status": "context_only",
        "when_to_use": "mix.stacked_bar_overlay",
        "required_parameters": [
          "metric",
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_comparison / multitier_bar",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_comparison/mix_comparison/multitier_bar.html",
      "output": "mix_comparison__multitier_bar.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 2600,
        "height": 781
      },
      "stats": {
        "byte_count": 32347,
        "non_white_ratio": 0.06676401063725007,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.multitier_bar",
        "grammar": "multitier_bar",
        "metrics": "Sales",
        "dimensions": "Company",
        "periods": "_Aug-2016, _Aug-2017",
        "trace_widths": "0.1, 0.68",
        "source_reference": "multitier_bar"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Multitier Bar for Sales",
          "infer current or all"
        ],
        "who": "Mexico hair color",
        "what": "Multitier Bar for Sales",
        "when": "infer current or all",
        "source": "../mix_comparison/mix_comparison/multitier_bar_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_comparison/mix_comparison/multitier_bar.html"
        },
        {
          "label": "context",
          "href": "../mix_comparison/mix_comparison/multitier_bar_chart_context.json"
        },
        {
          "label": "data",
          "href": "../mix_comparison/mix_comparison/multitier_bar_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_comparison/mix_comparison/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_comparison/mix_comparison/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.multitier_bar",
        "status": "context_only",
        "when_to_use": "mix.multitier_bar",
        "required_parameters": [
          "metric",
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_comparison / multitier_bar_dimension_panels",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_comparison/mix_comparison/multitier_bar_dimension_panels.html",
      "output": "mix_comparison__multitier_bar_dimension_panels.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1299,
        "height": 735
      },
      "stats": {
        "byte_count": 72434,
        "non_white_ratio": 0.05681502778170545,
        "edge_ink_ratio": 0.0028995756718528994,
        "crop_risk_ink_ratio": 0.005759235847731423,
        "top_edge_ink_ratio": 0.009017925877048279,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.multitier_bar",
        "grammar": "mix.multitier_bar",
        "metrics": "Sales",
        "dimensions": null,
        "periods": "_Aug-2016, _Aug-2017",
        "trace_widths": "0.68",
        "source_reference": "multitier_bar_dimension_..."
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Multitier Bar Two Dimension for Sales",
          "infer current or all"
        ],
        "who": "Mexico hair color",
        "what": "Multitier Bar Two Dimension for Sales",
        "when": "infer current or all",
        "source": "../mix_comparison/mix_comparison/source_pack/contexts/mix_contribution_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_comparison/mix_comparison/multitier_bar_dimension_panels.html"
        },
        {
          "label": "context",
          "href": "../mix_comparison/mix_comparison/source_pack/contexts/mix_contribution_context.json"
        },
        {
          "label": "data",
          "href": "../mix_comparison/mix_comparison/mix_contribution_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_comparison/mix_comparison/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_comparison/mix_comparison/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.multitier_bar",
        "status": "context_only",
        "when_to_use": "mix.multitier_bar",
        "required_parameters": [
          "source_file"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_comparison / multitier_bar_two_dimension",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_comparison/mix_comparison/multitier_bar_two_dimension.html",
      "output": "mix_comparison__multitier_bar_two_dimension.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1228,
        "height": 540
      },
      "stats": {
        "byte_count": 40031,
        "non_white_ratio": 0.05963174086138256,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.multitier_bar",
        "grammar": "mix.multitier_bar",
        "metrics": "Sales",
        "dimensions": "Brand, Channel",
        "periods": "_Aug-2016, _Aug-2017",
        "trace_widths": "0.68",
        "source_reference": "multitier_bar_two_dimens..."
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Multitier Bar Two Dimension for Sales",
          "infer current or all"
        ],
        "who": "Mexico hair color",
        "what": "Multitier Bar Two Dimension for Sales",
        "when": "infer current or all",
        "source": "../mix_comparison/mix_comparison/source_pack/contexts/mix_contribution_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_comparison/mix_comparison/multitier_bar_two_dimension.html"
        },
        {
          "label": "context",
          "href": "../mix_comparison/mix_comparison/source_pack/contexts/mix_contribution_context.json"
        },
        {
          "label": "data",
          "href": "../mix_comparison/mix_comparison/mix_contribution_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_comparison/mix_comparison/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_comparison/mix_comparison/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.multitier_bar",
        "status": "context_only",
        "when_to_use": "mix.multitier_bar",
        "required_parameters": [
          "source_file"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_like_for_like / like_for_like_column_total",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_like_for_like/mix_like_for_like/like_for_like_column_total.html",
      "output": "mix_like_for_like__like_for_like_column_total.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 450,
        "height": 651
      },
      "stats": {
        "byte_count": 11296,
        "non_white_ratio": 0.1522068612391193,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.like_for_like_column",
        "grammar": "stacked column",
        "metrics": "Sales",
        "dimensions": "Total View",
        "periods": "_Aug-2016, _Aug-2017,      ",
        "trace_widths": "0.8",
        "source_reference": "like_for_like_column_tot..."
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Like For Like Column Total for Sales",
          "explicit comparison periods"
        ],
        "who": "Mexico hair color",
        "what": "Like For Like Column Total for Sales",
        "when": "explicit comparison periods",
        "source": "../mix_like_for_like/mix_like_for_like/like_for_like_column_total_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_like_for_like/mix_like_for_like/like_for_like_column_total.html"
        },
        {
          "label": "context",
          "href": "../mix_like_for_like/mix_like_for_like/like_for_like_column_total_chart_context.json"
        },
        {
          "label": "data",
          "href": "../mix_like_for_like/mix_like_for_like/like_for_like_column_total_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_like_for_like/mix_like_for_like/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_like_for_like/mix_like_for_like/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.like_for_like_column",
        "status": "context_only",
        "when_to_use": "mix.like_for_like_column",
        "required_parameters": [
          "metric",
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_like_for_like / like_for_like_stacked_column",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_like_for_like/mix_like_for_like/like_for_like_stacked_column.html",
      "output": "mix_like_for_like__like_for_like_stacked_column.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 450,
        "height": 651
      },
      "stats": {
        "byte_count": 24318,
        "non_white_ratio": 0.16326676907322069,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.like_for_like_stacked_column",
        "grammar": "stacked column",
        "metrics": "Sales",
        "dimensions": "Company",
        "periods": "_Aug-2016, _Aug-2017,      ",
        "trace_widths": "0.8",
        "source_reference": "like_for_like_stacked_co..."
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Like For Like Stacked Column for Sales",
          "explicit comparison periods"
        ],
        "who": "Mexico hair color",
        "what": "Like For Like Stacked Column for Sales",
        "when": "explicit comparison periods",
        "source": "../mix_like_for_like/mix_like_for_like/like_for_like_stacked_column_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_like_for_like/mix_like_for_like/like_for_like_stacked_column.html"
        },
        {
          "label": "context",
          "href": "../mix_like_for_like/mix_like_for_like/like_for_like_stacked_column_chart_context.json"
        },
        {
          "label": "data",
          "href": "../mix_like_for_like/mix_like_for_like/like_for_like_stacked_column_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_like_for_like/mix_like_for_like/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_like_for_like/mix_like_for_like/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.like_for_like_stacked_column",
        "status": "context_only",
        "when_to_use": "mix.like_for_like_stacked_column",
        "required_parameters": [
          "metric",
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_cohort / cohort_since_stacked_column",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_cohort/mix_cohort/cohort_since_stacked_column.html",
      "output": "mix_cohort__cohort_since_stacked_column.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 480,
        "height": 651
      },
      "stats": {
        "byte_count": 13986,
        "non_white_ratio": 0.16625704045058884,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.cohort_since_stacked_column",
        "grammar": "stacked column",
        "metrics": "Sales",
        "dimensions": "Period, Barcode_Since",
        "periods": "2015, 2016, 2017",
        "trace_widths": "0.8",
        "source_reference": "cohort_since_stacked_col..."
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Cohort Since Stacked Column for Sales",
          "infer current or all"
        ],
        "who": "Mexico hair color",
        "what": "Cohort Since Stacked Column for Sales",
        "when": "infer current or all",
        "source": "../mix_cohort/mix_cohort/cohort_since_stacked_column_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_cohort/mix_cohort/cohort_since_stacked_column.html"
        },
        {
          "label": "context",
          "href": "../mix_cohort/mix_cohort/cohort_since_stacked_column_chart_context.json"
        },
        {
          "label": "data",
          "href": "../mix_cohort/mix_cohort/cohort_since_stacked_column_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_cohort/mix_cohort/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_cohort/mix_cohort/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.cohort_since_stacked_column",
        "status": "context_only",
        "when_to_use": "mix.cohort_since_stacked_column",
        "required_parameters": [
          "metric",
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_cohort / cohort_lost_stacked_column",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_cohort/mix_cohort/cohort_lost_stacked_column.html",
      "output": "mix_cohort__cohort_lost_stacked_column.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 480,
        "height": 651
      },
      "stats": {
        "byte_count": 11234,
        "non_white_ratio": 0.16382168458781363,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.cohort_lost_stacked_column",
        "grammar": "stacked column",
        "metrics": "Sales",
        "dimensions": "Period, Barcode_Lost",
        "periods": "2015, 2016, 2017",
        "trace_widths": "0.8",
        "source_reference": "cohort_lost_stacked_colu..."
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Cohort Lost Stacked Column for Sales",
          "infer current or all"
        ],
        "who": "Mexico hair color",
        "what": "Cohort Lost Stacked Column for Sales",
        "when": "infer current or all",
        "source": "../mix_cohort/mix_cohort/cohort_lost_stacked_column_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_cohort/mix_cohort/cohort_lost_stacked_column.html"
        },
        {
          "label": "context",
          "href": "../mix_cohort/mix_cohort/cohort_lost_stacked_column_chart_context.json"
        },
        {
          "label": "data",
          "href": "../mix_cohort/mix_cohort/cohort_lost_stacked_column_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_cohort/mix_cohort/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_cohort/mix_cohort/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.cohort_lost_stacked_column",
        "status": "context_only",
        "when_to_use": "mix.cohort_lost_stacked_column",
        "required_parameters": [
          "metric",
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_comparison / line",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_comparison/mix_regular/line.html",
      "output": "mix_comparison__mix_regular__line.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 809,
        "height": 530
      },
      "stats": {
        "byte_count": 26301,
        "non_white_ratio": 0.020491172423443803,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.timeline",
        "grammar": "mix.timeline",
        "metrics": "Sales",
        "dimensions": null,
        "periods": "AC",
        "trace_widths": null,
        "source_reference": "line"
      },
      "title_context": {
        "lines": [
          "Mix & Contribution Analysis",
          "mix.timeline | Sales",
          "AC"
        ],
        "who": "Mix & Contribution Analysis",
        "what": "mix.timeline | Sales",
        "when": "AC",
        "source": "../mix_comparison/mix_regular/source_pack/contexts/mix_contribution_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_comparison/mix_regular/line.html"
        },
        {
          "label": "context",
          "href": "../mix_comparison/mix_regular/source_pack/contexts/mix_contribution_context.json"
        },
        {
          "label": "data",
          "href": "../mix_comparison/mix_regular/mix_contribution_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_comparison/mix_regular/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_comparison/mix_regular/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.timeline",
        "status": "context_only",
        "when_to_use": "mix.timeline",
        "required_parameters": [
          "source_file"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_comparison / line_small_multiples",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_comparison/mix_regular/line_small_multiples.html",
      "output": "mix_comparison__mix_regular__line_small_multiples.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 2220,
        "height": 1820
      },
      "stats": {
        "byte_count": 106890,
        "non_white_ratio": 0.009433224433224432,
        "edge_ink_ratio": 0.003323065823065823,
        "crop_risk_ink_ratio": 0.006586908690869087,
        "top_edge_ink_ratio": 0.011986986986986987,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.timeline",
        "grammar": "mix.timeline",
        "metrics": "Sales",
        "dimensions": "Company",
        "periods": "AC",
        "trace_widths": null,
        "source_reference": "line_small_multiples"
      },
      "title_context": {
        "lines": [
          "Mix & Contribution Analysis",
          "mix.timeline | Sales | Company",
          "AC"
        ],
        "who": "Mix & Contribution Analysis",
        "what": "mix.timeline | Sales | Company",
        "when": "AC",
        "source": "../mix_comparison/mix_regular/source_pack/contexts/mix_contribution_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_comparison/mix_regular/line_small_multiples.html"
        },
        {
          "label": "context",
          "href": "../mix_comparison/mix_regular/source_pack/contexts/mix_contribution_context.json"
        },
        {
          "label": "data",
          "href": "../mix_comparison/mix_regular/mix_contribution_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_comparison/mix_regular/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_comparison/mix_regular/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.timeline",
        "status": "context_only",
        "when_to_use": "mix.timeline",
        "required_parameters": [
          "source_file"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_comparison / area_absolute",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_comparison/mix_regular/area_absolute.html",
      "output": "mix_comparison__mix_regular__area_absolute.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 970,
        "height": 600
      },
      "stats": {
        "byte_count": 101373,
        "non_white_ratio": 0.30499312714776633,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.area",
        "grammar": "mix.area",
        "metrics": "Sales",
        "dimensions": "Company",
        "periods": "AC",
        "trace_widths": null,
        "source_reference": "area_absolute"
      },
      "title_context": {
        "lines": [
          "Mix & Contribution Analysis",
          "mix.area | Sales | Company",
          "AC"
        ],
        "who": "Mix & Contribution Analysis",
        "what": "mix.area | Sales | Company",
        "when": "AC",
        "source": "../mix_comparison/mix_regular/source_pack/contexts/mix_contribution_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_comparison/mix_regular/area_absolute.html"
        },
        {
          "label": "context",
          "href": "../mix_comparison/mix_regular/source_pack/contexts/mix_contribution_context.json"
        },
        {
          "label": "data",
          "href": "../mix_comparison/mix_regular/mix_contribution_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_comparison/mix_regular/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_comparison/mix_regular/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.area",
        "status": "context_only",
        "when_to_use": "mix.area",
        "required_parameters": [
          "source_file"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_comparison / area_share",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_comparison/mix_regular/area_share.html",
      "output": "mix_comparison__mix_regular__area_share.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 970,
        "height": 600
      },
      "stats": {
        "byte_count": 39625,
        "non_white_ratio": 0.45754123711340206,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.area",
        "grammar": "mix.area",
        "metrics": "Sales",
        "dimensions": "Company",
        "periods": "AC",
        "trace_widths": null,
        "source_reference": "area_share"
      },
      "title_context": {
        "lines": [
          "Mix & Contribution Analysis",
          "mix.area | Sales | Company",
          "AC"
        ],
        "who": "Mix & Contribution Analysis",
        "what": "mix.area | Sales | Company",
        "when": "AC",
        "source": "../mix_comparison/mix_regular/source_pack/contexts/mix_contribution_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_comparison/mix_regular/area_share.html"
        },
        {
          "label": "context",
          "href": "../mix_comparison/mix_regular/source_pack/contexts/mix_contribution_context.json"
        },
        {
          "label": "data",
          "href": "../mix_comparison/mix_regular/mix_contribution_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_comparison/mix_regular/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_comparison/mix_regular/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.area",
        "status": "context_only",
        "when_to_use": "mix.area",
        "required_parameters": [
          "source_file"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_current / barmekko",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_current/mix_regular/barmekko.html",
      "output": "mix_current__mix_regular__barmekko.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1052,
        "height": 650
      },
      "stats": {
        "byte_count": 27940,
        "non_white_ratio": 0.17385200350979818,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.barmekko",
        "grammar": "mix.barmekko",
        "metrics": "Unit Price, Units",
        "dimensions": "Company, Channel",
        "periods": "AC",
        "trace_widths": "758695, 2154343, 4131041, 4220396 +2",
        "source_reference": "barmekko"
      },
      "title_context": {
        "lines": [
          "Mix & Contribution Analysis",
          "mix.barmekko | Unit Price, Units | Company, Channel",
          "AC"
        ],
        "who": "Mix & Contribution Analysis",
        "what": "mix.barmekko | Unit Price, Units | Company, Channel",
        "when": "AC",
        "source": "../mix_current/mix_regular/source_pack/contexts/mix_contribution_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_current/mix_regular/barmekko.html"
        },
        {
          "label": "context",
          "href": "../mix_current/mix_regular/source_pack/contexts/mix_contribution_context.json"
        },
        {
          "label": "data",
          "href": "../mix_current/mix_regular/mix_contribution_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_current/mix_regular/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_current/mix_regular/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.barmekko",
        "status": "context_only",
        "when_to_use": "mix.barmekko",
        "required_parameters": [
          "source_file"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_current / barmekko_small_multiples",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_current/mix_regular/barmekko_small_multiples.html",
      "output": "mix_current__mix_regular__barmekko_small_multiples.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1500,
        "height": 650
      },
      "stats": {
        "byte_count": 47611,
        "non_white_ratio": 0.3265220512820513,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.barmekko",
        "grammar": "mix.barmekko",
        "metrics": "Unit Price, Units",
        "dimensions": "Company, Channel, Type",
        "periods": "AC",
        "trace_widths": "1354, 18391, 21099, 27940 +9",
        "source_reference": "barmekko_small_multiples"
      },
      "title_context": {
        "lines": [
          "Mix & Contribution Analysis",
          "mix.barmekko | Unit Price, Units | Company, Channel, Type",
          "AC"
        ],
        "who": "Mix & Contribution Analysis",
        "what": "mix.barmekko | Unit Price, Units | Company, Channel, Type",
        "when": "AC",
        "source": "../mix_current/mix_regular/source_pack/contexts/mix_contribution_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_current/mix_regular/barmekko_small_multiples.html"
        },
        {
          "label": "context",
          "href": "../mix_current/mix_regular/source_pack/contexts/mix_contribution_context.json"
        },
        {
          "label": "data",
          "href": "../mix_current/mix_regular/mix_contribution_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_current/mix_regular/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_current/mix_regular/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.barmekko",
        "status": "context_only",
        "when_to_use": "mix.barmekko",
        "required_parameters": [
          "source_file"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_current / marimekko",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_current/mix_regular/marimekko.html",
      "output": "mix_current__mix_regular__marimekko.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1052,
        "height": 650
      },
      "stats": {
        "byte_count": 32372,
        "non_white_ratio": 0.5515940333430828,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.marimekko",
        "grammar": "mix.marimekko",
        "metrics": "Sales",
        "dimensions": "Company, Channel",
        "periods": "AC",
        "trace_widths": "103820870, 107924856, 130655887, 131283368 +2",
        "source_reference": "marimekko"
      },
      "title_context": {
        "lines": [
          "Mix & Contribution Analysis",
          "mix.marimekko | Sales | Company, Channel",
          "AC"
        ],
        "who": "Mix & Contribution Analysis",
        "what": "mix.marimekko | Sales | Company, Channel",
        "when": "AC",
        "source": "../mix_current/mix_regular/source_pack/contexts/mix_contribution_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_current/mix_regular/marimekko.html"
        },
        {
          "label": "context",
          "href": "../mix_current/mix_regular/source_pack/contexts/mix_contribution_context.json"
        },
        {
          "label": "data",
          "href": "../mix_current/mix_regular/mix_contribution_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_current/mix_regular/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_current/mix_regular/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.marimekko",
        "status": "context_only",
        "when_to_use": "mix.marimekko",
        "required_parameters": [
          "source_file"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_current / marimekko_small_multiples",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_current/mix_regular/marimekko_small_multiples.html",
      "output": "mix_current__mix_regular__marimekko_small_multiples.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 2721,
        "height": 910
      },
      "stats": {
        "byte_count": 96005,
        "non_white_ratio": 0.5587494093558041,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.marimekko",
        "grammar": "mix.marimekko",
        "metrics": "Sales",
        "dimensions": "Company, Channel, Type",
        "periods": "AC",
        "trace_widths": "131468, 1874924, 1916776, 1956355 +9",
        "source_reference": "marimekko_small_multiple..."
      },
      "title_context": {
        "lines": [
          "Mix & Contribution Analysis",
          "mix.marimekko | Sales | Company, Channel, Type",
          "AC"
        ],
        "who": "Mix & Contribution Analysis",
        "what": "mix.marimekko | Sales | Company, Channel, Type",
        "when": "AC",
        "source": "../mix_current/mix_regular/source_pack/contexts/mix_contribution_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_current/mix_regular/marimekko_small_multiples.html"
        },
        {
          "label": "context",
          "href": "../mix_current/mix_regular/source_pack/contexts/mix_contribution_context.json"
        },
        {
          "label": "data",
          "href": "../mix_current/mix_regular/mix_contribution_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_current/mix_regular/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_current/mix_regular/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.marimekko",
        "status": "context_only",
        "when_to_use": "mix.marimekko",
        "required_parameters": [
          "source_file"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_current / pareto",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_current/mix_regular/pareto.html",
      "output": "mix_current__mix_regular__pareto.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 700,
        "height": 900
      },
      "stats": {
        "byte_count": 41253,
        "non_white_ratio": 0.032733333333333337,
        "edge_ink_ratio": 0.025175644028103045,
        "crop_risk_ink_ratio": 0.001875,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0033333333333333335,
        "bottom_edge_ink_ratio": 0.09448979591836734,
        "left_edge_ink_ratio": 0.011904761904761904
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.pareto",
        "grammar": "mix.pareto",
        "metrics": "Sales, Units",
        "dimensions": "Product",
        "periods": "AC",
        "trace_widths": null,
        "source_reference": "pareto"
      },
      "title_context": {
        "lines": [
          "Mix & Contribution Analysis",
          "mix.pareto | Sales, Units | Product",
          "AC"
        ],
        "who": "Mix & Contribution Analysis",
        "what": "mix.pareto | Sales, Units | Product",
        "when": "AC",
        "source": "../mix_current/mix_regular/source_pack/contexts/mix_contribution_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_current/mix_regular/pareto.html"
        },
        {
          "label": "context",
          "href": "../mix_current/mix_regular/source_pack/contexts/mix_contribution_context.json"
        },
        {
          "label": "data",
          "href": "../mix_current/mix_regular/mix_contribution_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_current/mix_regular/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_current/mix_regular/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.pareto",
        "status": "context_only",
        "when_to_use": "mix.pareto",
        "required_parameters": [
          "source_file"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_current / stacked_pareto_abc",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_current/mix_regular/stacked_pareto_abc.html",
      "output": "mix_current__mix_regular__stacked_pareto_abc.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 480,
        "height": 650
      },
      "stats": {
        "byte_count": 18559,
        "non_white_ratio": 0.20131730769230768,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.stacked_pareto",
        "grammar": "pareto stacked column",
        "metrics": "Sales, Units",
        "dimensions": "Brand",
        "periods": "AC",
        "trace_widths": "0.9",
        "source_reference": "stacked_pareto_abc"
      },
      "title_context": {
        "lines": [
          "Mix & Contribution Analysis",
          "pareto stacked column | Sales, Units | Brand",
          "AC"
        ],
        "who": "Mix & Contribution Analysis",
        "what": "pareto stacked column | Sales, Units | Brand",
        "when": "AC",
        "source": "../mix_current/mix_regular/stacked_pareto_abc_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_current/mix_regular/stacked_pareto_abc.html"
        },
        {
          "label": "context",
          "href": "../mix_current/mix_regular/stacked_pareto_abc_chart_context.json"
        },
        {
          "label": "data",
          "href": "../mix_current/mix_regular/stacked_pareto_abc_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_current/mix_regular/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_current/mix_regular/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.stacked_pareto",
        "status": "context_only",
        "when_to_use": "mix.stacked_pareto",
        "required_parameters": [
          "metric",
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_current / stacked_pareto_by_dimension",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_current/mix_regular/stacked_pareto_by_dimension.html",
      "output": "mix_current__mix_regular__stacked_pareto_by_dimension.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 480,
        "height": 650
      },
      "stats": {
        "byte_count": 27655,
        "non_white_ratio": 0.20633974358974358,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.stacked_pareto",
        "grammar": "pareto stacked column",
        "metrics": "Sales, Units",
        "dimensions": "Brand, Company",
        "periods": "AC",
        "trace_widths": "0.9",
        "source_reference": "stacked_pareto_by_dimens..."
      },
      "title_context": {
        "lines": [
          "Mix & Contribution Analysis",
          "pareto stacked column | Sales, Units | Brand, Company",
          "AC"
        ],
        "who": "Mix & Contribution Analysis",
        "what": "pareto stacked column | Sales, Units | Brand, Company",
        "when": "AC",
        "source": "../mix_current/mix_regular/stacked_pareto_by_dimension_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_current/mix_regular/stacked_pareto_by_dimension.html"
        },
        {
          "label": "context",
          "href": "../mix_current/mix_regular/stacked_pareto_by_dimension_chart_context.json"
        },
        {
          "label": "data",
          "href": "../mix_current/mix_regular/stacked_pareto_by_dimension_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_current/mix_regular/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_current/mix_regular/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.stacked_pareto",
        "status": "context_only",
        "when_to_use": "mix.stacked_pareto",
        "required_parameters": [
          "metric",
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_comparison / mix_comparison_column_total / column_total",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_comparison/mix_comparison_column_total/column_total.html",
      "output": "mix_comparison__mix_comparison_column_total__column_total.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 450,
        "height": 651
      },
      "stats": {
        "byte_count": 11346,
        "non_white_ratio": 0.15294077487625873,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.column",
        "grammar": "stacked column",
        "metrics": "Sales",
        "dimensions": "Total View",
        "periods": "_Aug-2016, _Aug-2017,      ",
        "trace_widths": "0.8",
        "source_reference": "column_total"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Column Total for Sales",
          "infer current or all"
        ],
        "who": "Mexico hair color",
        "what": "Column Total for Sales",
        "when": "infer current or all",
        "source": "../mix_comparison/mix_comparison_column_total/column_total_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_comparison/mix_comparison_column_total/column_total.html"
        },
        {
          "label": "context",
          "href": "../mix_comparison/mix_comparison_column_total/column_total_chart_context.json"
        },
        {
          "label": "data",
          "href": "../mix_comparison/mix_comparison_column_total/column_total_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_comparison/mix_comparison_column_total/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_comparison/mix_comparison_column_total/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.column",
        "status": "context_only",
        "when_to_use": "mix.column",
        "required_parameters": [
          "metric",
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_comparison / mix_comparison_column_total / column_total_with_overlay",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_comparison/mix_comparison_column_total/column_total_with_overlay.html",
      "output": "mix_comparison__mix_comparison_column_total__column_total_with_overlay.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 450,
        "height": 651
      },
      "stats": {
        "byte_count": 13173,
        "non_white_ratio": 0.15497866530124593,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.column_overlay",
        "grammar": "stacked column",
        "metrics": "Sales, Units",
        "dimensions": "Total View",
        "periods": "_Aug-2016, _Aug-2017,      ",
        "trace_widths": "0.8",
        "source_reference": "column_total_with_overla..."
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Column Total With Overlay for Sales, Units",
          "infer current or all"
        ],
        "who": "Mexico hair color",
        "what": "Column Total With Overlay for Sales, Units",
        "when": "infer current or all",
        "source": "../mix_comparison/mix_comparison_column_total/column_total_with_overlay_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_comparison/mix_comparison_column_total/column_total_with_overlay.html"
        },
        {
          "label": "context",
          "href": "../mix_comparison/mix_comparison_column_total/column_total_with_overlay_chart_context.json"
        },
        {
          "label": "data",
          "href": "../mix_comparison/mix_comparison_column_total/column_total_with_overlay_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_comparison/mix_comparison_column_total/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_comparison/mix_comparison_column_total/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.column_overlay",
        "status": "context_only",
        "when_to_use": "mix.column_overlay",
        "required_parameters": [
          "metric",
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_comparison / mix_regular / stacked_column",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_comparison/mix_regular/stacked_column.html",
      "output": "mix_comparison__mix_regular__stacked_column.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 450,
        "height": 650
      },
      "stats": {
        "byte_count": 24370,
        "non_white_ratio": 0.16415726495726496,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.stacked_column",
        "grammar": "stacked column",
        "metrics": "Sales",
        "dimensions": "Company",
        "periods": "_Aug-2016, _Aug-2017,      ",
        "trace_widths": "0.8",
        "source_reference": "stacked_column"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Sales in mEUR by Company",
          "YTD through 2017-08-27"
        ],
        "who": "Mexico hair color",
        "what": "Sales in mEUR by Company",
        "when": "YTD through 2017-08-27",
        "source": "../mix_comparison/mix_regular/stacked_column_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_comparison/mix_regular/stacked_column.html"
        },
        {
          "label": "context",
          "href": "../mix_comparison/mix_regular/stacked_column_chart_context.json"
        },
        {
          "label": "data",
          "href": "../mix_comparison/mix_regular/stacked_column_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_comparison/mix_regular/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_comparison/mix_regular/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.stacked_column",
        "status": "context_only",
        "when_to_use": "mix.stacked_column",
        "required_parameters": [
          "metric",
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "mix_comparison / mix_regular / stacked_column_small_multiples",
      "plugin_source": "mix-contribution-analysis",
      "plugin_source_label": "Mix & Contribution Analysis",
      "source": "../mix_comparison/mix_regular/stacked_column_small_multiples.html",
      "output": "mix_comparison__mix_regular__stacked_column_small_multiples.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 2220,
        "height": 1820
      },
      "stats": {
        "byte_count": 39189,
        "non_white_ratio": 0.0846022671022671,
        "edge_ink_ratio": 0.00822094572094572,
        "crop_risk_ink_ratio": 0.016295379537953795,
        "top_edge_ink_ratio": 0.029654654654654656,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "mix.stacked_column",
        "grammar": "stacked column",
        "metrics": "Sales",
        "dimensions": "Company",
        "periods": "_Aug-2016, _Aug-2017,      ",
        "trace_widths": "0.8",
        "source_reference": "stacked_column_small_mul..."
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Sales in mEUR by Company",
          "YTD through 2017-08-27"
        ],
        "who": "Mexico hair color",
        "what": "Sales in mEUR by Company",
        "when": "YTD through 2017-08-27",
        "source": "../mix_comparison/mix_regular/stacked_column_small_multiples_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../mix_comparison/mix_regular/stacked_column_small_multiples.html"
        },
        {
          "label": "context",
          "href": "../mix_comparison/mix_regular/stacked_column_small_multiples_chart_context.json"
        },
        {
          "label": "data",
          "href": "../mix_comparison/mix_regular/stacked_column_small_multiples_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../mix_comparison/mix_regular/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../mix_comparison/mix_regular/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "mix.stacked_column",
        "status": "context_only",
        "when_to_use": "mix.stacked_column",
        "required_parameters": [
          "metric",
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "scatter / scatter_bubble / bubble",
      "plugin_source": "scatter-bubble-analysis",
      "plugin_source_label": "Scatter & Bubble Analysis",
      "source": "../scatter/scatter_bubble/bubble.html",
      "output": "scatter__scatter_bubble__bubble.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1200,
        "height": 900
      },
      "stats": {
        "byte_count": 27093,
        "non_white_ratio": 0.013425925925925926,
        "edge_ink_ratio": 0.01878535596114847,
        "crop_risk_ink_ratio": 0.037248677248677246,
        "top_edge_ink_ratio": 0.06518518518518518,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [
        {
          "label": "crop risk",
          "detail": "High ink near top/right image edges; inspect for cropping."
        }
      ],
      "context_summary": {
        "capability": "scatter.bubble",
        "grammar": "bubbleChart",
        "metrics": null,
        "dimensions": "Company, Brand, Channel +3",
        "periods": "AC",
        "trace_widths": null,
        "source_reference": "bubble"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "<b>Units, CWD, Value_LC</b> in m by Company",
          "AC vs PY"
        ],
        "who": "Mexico hair color",
        "what": "<b>Units, CWD, Value_LC</b> in m by Company",
        "when": "AC vs PY",
        "source": "../scatter/scatter_bubble/bubble_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../scatter/scatter_bubble/bubble.html"
        },
        {
          "label": "context",
          "href": "../scatter/scatter_bubble/bubble_chart_context.json"
        },
        {
          "label": "data",
          "href": "../scatter/scatter_bubble/bubble_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../scatter/scatter_bubble/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../scatter/scatter_bubble/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "scatter.bubble",
        "status": "context_only",
        "when_to_use": "scatter.bubble",
        "required_parameters": [
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "scatter / scatter_bubble / bubble_small_multiples",
      "plugin_source": "scatter-bubble-analysis",
      "plugin_source_label": "Scatter & Bubble Analysis",
      "source": "../scatter/scatter_bubble/bubble_small_multiples.html",
      "output": "scatter__scatter_bubble__bubble_small_multiples.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1980,
        "height": 1300
      },
      "stats": {
        "byte_count": 48197,
        "non_white_ratio": 0.00960916860916861,
        "edge_ink_ratio": 0.010117724930263345,
        "crop_risk_ink_ratio": 0.0200750469043152,
        "top_edge_ink_ratio": 0.03325563325563326,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [
        {
          "label": "crop risk",
          "detail": "High ink near top/right image edges; inspect for cropping."
        }
      ],
      "context_summary": {
        "capability": "scatter.bubble",
        "grammar": "bubbleChart",
        "metrics": null,
        "dimensions": "Company, Brand, Channel +3",
        "periods": "AC",
        "trace_widths": null,
        "source_reference": "bubble_small_multiples"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "<b>Units, CWD, Value_LC</b> in m by Company and Channel",
          "AC vs PY"
        ],
        "who": "Mexico hair color",
        "what": "<b>Units, CWD, Value_LC</b> in m by Company and Channel",
        "when": "AC vs PY",
        "source": "../scatter/scatter_bubble/bubble_small_multiples_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../scatter/scatter_bubble/bubble_small_multiples.html"
        },
        {
          "label": "context",
          "href": "../scatter/scatter_bubble/bubble_small_multiples_chart_context.json"
        },
        {
          "label": "data",
          "href": "../scatter/scatter_bubble/bubble_small_multiples_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../scatter/scatter_bubble/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../scatter/scatter_bubble/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "scatter.bubble",
        "status": "context_only",
        "when_to_use": "scatter.bubble",
        "required_parameters": [
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "scatter / scatter_bubble / scatter",
      "plugin_source": "scatter-bubble-analysis",
      "plugin_source_label": "Scatter & Bubble Analysis",
      "source": "../scatter/scatter_bubble/scatter.html",
      "output": "scatter__scatter_bubble__scatter.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1200,
        "height": 900
      },
      "stats": {
        "byte_count": 29841,
        "non_white_ratio": 0.012389814814814815,
        "edge_ink_ratio": 0.01878535596114847,
        "crop_risk_ink_ratio": 0.037248677248677246,
        "top_edge_ink_ratio": 0.06518518518518518,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [
        {
          "label": "crop risk",
          "detail": "High ink near top/right image edges; inspect for cropping."
        }
      ],
      "context_summary": {
        "capability": "scatter.scatter",
        "grammar": "scatterChart",
        "metrics": null,
        "dimensions": "Company, Brand, Channel +3",
        "periods": "AC",
        "trace_widths": null,
        "source_reference": "scatter"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "<b>Units, CWD </b> in m aggregated by Company",
          "AC vs PY"
        ],
        "who": "Mexico hair color",
        "what": "<b>Units, CWD </b> in m aggregated by Company",
        "when": "AC vs PY",
        "source": "../scatter/scatter_bubble/scatter_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../scatter/scatter_bubble/scatter.html"
        },
        {
          "label": "context",
          "href": "../scatter/scatter_bubble/scatter_chart_context.json"
        },
        {
          "label": "data",
          "href": "../scatter/scatter_bubble/scatter_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../scatter/scatter_bubble/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../scatter/scatter_bubble/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "scatter.scatter",
        "status": "context_only",
        "when_to_use": "scatter.scatter",
        "required_parameters": [
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "scatter / scatter_bubble / scatter_small_multiples",
      "plugin_source": "scatter-bubble-analysis",
      "plugin_source_label": "Scatter & Bubble Analysis",
      "source": "../scatter/scatter_bubble/scatter_small_multiples.html",
      "output": "scatter__scatter_bubble__scatter_small_multiples.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1980,
        "height": 1300
      },
      "stats": {
        "byte_count": 46021,
        "non_white_ratio": 0.009888500388500388,
        "edge_ink_ratio": 0.010117724930263345,
        "crop_risk_ink_ratio": 0.0200750469043152,
        "top_edge_ink_ratio": 0.03325563325563326,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [
        {
          "label": "crop risk",
          "detail": "High ink near top/right image edges; inspect for cropping."
        }
      ],
      "context_summary": {
        "capability": "scatter.scatter",
        "grammar": "scatterChart",
        "metrics": null,
        "dimensions": "Company, Brand, Channel +3",
        "periods": "AC",
        "trace_widths": null,
        "source_reference": "scatter_small_multiples"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "<b>Units, CWD </b> in m aggregated by Company and Channel",
          "AC vs PY"
        ],
        "who": "Mexico hair color",
        "what": "<b>Units, CWD </b> in m aggregated by Company and Channel",
        "when": "AC vs PY",
        "source": "../scatter/scatter_bubble/scatter_small_multiples_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../scatter/scatter_bubble/scatter_small_multiples.html"
        },
        {
          "label": "context",
          "href": "../scatter/scatter_bubble/scatter_small_multiples_chart_context.json"
        },
        {
          "label": "data",
          "href": "../scatter/scatter_bubble/scatter_small_multiples_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../scatter/scatter_bubble/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../scatter/scatter_bubble/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "scatter.scatter",
        "status": "context_only",
        "when_to_use": "scatter.scatter",
        "required_parameters": [
          "dimensions"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "distribution / boxplot",
      "plugin_source": "distribution-analysis",
      "plugin_source_label": "Distribution Analysis",
      "source": "../distribution/distribution/boxplot.html",
      "output": "distribution__boxplot.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1400,
        "height": 901
      },
      "stats": {
        "byte_count": 25038,
        "non_white_ratio": 0.02597510702394165,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "distribution.boxplot",
        "grammar": "distribution.boxplot",
        "metrics": "Units",
        "dimensions": null,
        "periods": "~Aug-2016, ~Aug-2017",
        "trace_widths": null,
        "source_reference": "boxplot"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Stripplot Small Multiples of Units by Company",
          "~Aug 2017 vs ~Aug 2016, through 2017 08 27"
        ],
        "who": "Mexico hair color",
        "what": "Stripplot Small Multiples of Units by Company",
        "when": "~Aug 2017 vs ~Aug 2016, through 2017 08 27",
        "source": "../distribution/distribution/source_pack/contexts/distribution_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../distribution/distribution/boxplot.html"
        },
        {
          "label": "context",
          "href": "../distribution/distribution/source_pack/contexts/distribution_context.json"
        },
        {
          "label": "data",
          "href": "../distribution/distribution/distribution_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../distribution/distribution/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../distribution/distribution/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "distribution.boxplot",
        "status": "context_only",
        "when_to_use": "distribution.boxplot",
        "required_parameters": [
          "source_file",
          "metric"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "distribution / boxplot_small_multiples",
      "plugin_source": "distribution-analysis",
      "plugin_source_label": "Distribution Analysis",
      "source": "../distribution/distribution/boxplot_small_multiples.html",
      "output": "distribution__boxplot_small_multiples.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1400,
        "height": 901
      },
      "stats": {
        "byte_count": 32444,
        "non_white_ratio": 0.017498810845092753,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "distribution.boxplot",
        "grammar": "distribution.boxplot",
        "metrics": "Units",
        "dimensions": null,
        "periods": "~Aug-2016, ~Aug-2017",
        "trace_widths": null,
        "source_reference": "boxplot_small_multiples"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Stripplot Small Multiples of Units by Company",
          "~Aug 2017 vs ~Aug 2016, through 2017 08 27"
        ],
        "who": "Mexico hair color",
        "what": "Stripplot Small Multiples of Units by Company",
        "when": "~Aug 2017 vs ~Aug 2016, through 2017 08 27",
        "source": "../distribution/distribution/source_pack/contexts/distribution_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../distribution/distribution/boxplot_small_multiples.html"
        },
        {
          "label": "context",
          "href": "../distribution/distribution/source_pack/contexts/distribution_context.json"
        },
        {
          "label": "data",
          "href": "../distribution/distribution/distribution_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../distribution/distribution/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../distribution/distribution/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "distribution.boxplot",
        "status": "context_only",
        "when_to_use": "distribution.boxplot",
        "required_parameters": [
          "source_file",
          "metric"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "distribution / ecdf",
      "plugin_source": "distribution-analysis",
      "plugin_source_label": "Distribution Analysis",
      "source": "../distribution/distribution/ecdf.html",
      "output": "distribution__ecdf.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1400,
        "height": 901
      },
      "stats": {
        "byte_count": 22092,
        "non_white_ratio": 0.009473600761059141,
        "edge_ink_ratio": 0.0045992115637319315,
        "crop_risk_ink_ratio": 0.0021246800907817856,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.005426069798988778,
        "bottom_edge_ink_ratio": 0.007857142857142858,
        "left_edge_ink_ratio": 0.00567270933530645
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "distribution.ecdf",
        "grammar": "distribution.ecdf",
        "metrics": "Units",
        "dimensions": null,
        "periods": "~Aug-2016, ~Aug-2017",
        "trace_widths": null,
        "source_reference": "ecdf"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Stripplot Small Multiples of Units by Company",
          "~Aug 2017 vs ~Aug 2016, through 2017 08 27"
        ],
        "who": "Mexico hair color",
        "what": "Stripplot Small Multiples of Units by Company",
        "when": "~Aug 2017 vs ~Aug 2016, through 2017 08 27",
        "source": "../distribution/distribution/source_pack/contexts/distribution_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../distribution/distribution/ecdf.html"
        },
        {
          "label": "context",
          "href": "../distribution/distribution/source_pack/contexts/distribution_context.json"
        },
        {
          "label": "data",
          "href": "../distribution/distribution/distribution_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../distribution/distribution/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../distribution/distribution/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "distribution.ecdf",
        "status": "context_only",
        "when_to_use": "distribution.ecdf",
        "required_parameters": [
          "source_file",
          "metric"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "distribution / ecdf_small_multiples",
      "plugin_source": "distribution-analysis",
      "plugin_source_label": "Distribution Analysis",
      "source": "../distribution/distribution/ecdf_small_multiples.html",
      "output": "distribution__ecdf_small_multiples.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1400,
        "height": 901
      },
      "stats": {
        "byte_count": 38033,
        "non_white_ratio": 0.016099571904233393,
        "edge_ink_ratio": 0.006789312308366185,
        "crop_risk_ink_ratio": 0.0021246800907817856,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.005426069798988778,
        "bottom_edge_ink_ratio": 0.007857142857142858,
        "left_edge_ink_ratio": 0.016771488469601678
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "distribution.ecdf",
        "grammar": "distribution.ecdf",
        "metrics": "Units",
        "dimensions": null,
        "periods": "~Aug-2016, ~Aug-2017",
        "trace_widths": null,
        "source_reference": "ecdf_small_multiples"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Stripplot Small Multiples of Units by Company",
          "~Aug 2017 vs ~Aug 2016, through 2017 08 27"
        ],
        "who": "Mexico hair color",
        "what": "Stripplot Small Multiples of Units by Company",
        "when": "~Aug 2017 vs ~Aug 2016, through 2017 08 27",
        "source": "../distribution/distribution/source_pack/contexts/distribution_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../distribution/distribution/ecdf_small_multiples.html"
        },
        {
          "label": "context",
          "href": "../distribution/distribution/source_pack/contexts/distribution_context.json"
        },
        {
          "label": "data",
          "href": "../distribution/distribution/distribution_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../distribution/distribution/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../distribution/distribution/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "distribution.ecdf",
        "status": "context_only",
        "when_to_use": "distribution.ecdf",
        "required_parameters": [
          "source_file",
          "metric"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "distribution / histogram",
      "plugin_source": "distribution-analysis",
      "plugin_source_label": "Distribution Analysis",
      "source": "../distribution/distribution/histogram.html",
      "output": "distribution__histogram.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1400,
        "height": 901
      },
      "stats": {
        "byte_count": 18584,
        "non_white_ratio": 0.1462272078642778,
        "edge_ink_ratio": 0.17223925633912493,
        "crop_risk_ink_ratio": 0.0021246800907817856,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.005426069798988778,
        "bottom_edge_ink_ratio": 0.007380952380952381,
        "left_edge_ink_ratio": 0.8559625107904797
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "distribution.histogram",
        "grammar": "distribution.histogram",
        "metrics": "Units",
        "dimensions": null,
        "periods": "~Aug-2016, ~Aug-2017",
        "trace_widths": null,
        "source_reference": "histogram"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Stripplot Small Multiples of Units by Company",
          "~Aug 2017 vs ~Aug 2016, through 2017 08 27"
        ],
        "who": "Mexico hair color",
        "what": "Stripplot Small Multiples of Units by Company",
        "when": "~Aug 2017 vs ~Aug 2016, through 2017 08 27",
        "source": "../distribution/distribution/source_pack/contexts/distribution_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../distribution/distribution/histogram.html"
        },
        {
          "label": "context",
          "href": "../distribution/distribution/source_pack/contexts/distribution_context.json"
        },
        {
          "label": "data",
          "href": "../distribution/distribution/distribution_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../distribution/distribution/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../distribution/distribution/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "distribution.histogram",
        "status": "context_only",
        "when_to_use": "distribution.histogram",
        "required_parameters": [
          "source_file",
          "metric"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "distribution / histogram_small_multiples",
      "plugin_source": "distribution-analysis",
      "plugin_source_label": "Distribution Analysis",
      "source": "../distribution/distribution/histogram_small_multiples.html",
      "output": "distribution__histogram_small_multiples.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1400,
        "height": 901
      },
      "stats": {
        "byte_count": 28426,
        "non_white_ratio": 0.048481052798477885,
        "edge_ink_ratio": 0.13391249330802552,
        "crop_risk_ink_ratio": 0.0021246800907817856,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.005426069798988778,
        "bottom_edge_ink_ratio": 0.007380952380952381,
        "left_edge_ink_ratio": 0.6617338759403132
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "distribution.histogram",
        "grammar": "distribution.histogram",
        "metrics": "Units",
        "dimensions": null,
        "periods": "~Aug-2016, ~Aug-2017",
        "trace_widths": null,
        "source_reference": "histogram_small_multiple..."
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Stripplot Small Multiples of Units by Company",
          "~Aug 2017 vs ~Aug 2016, through 2017 08 27"
        ],
        "who": "Mexico hair color",
        "what": "Stripplot Small Multiples of Units by Company",
        "when": "~Aug 2017 vs ~Aug 2016, through 2017 08 27",
        "source": "../distribution/distribution/source_pack/contexts/distribution_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../distribution/distribution/histogram_small_multiples.html"
        },
        {
          "label": "context",
          "href": "../distribution/distribution/source_pack/contexts/distribution_context.json"
        },
        {
          "label": "data",
          "href": "../distribution/distribution/distribution_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../distribution/distribution/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../distribution/distribution/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "distribution.histogram",
        "status": "context_only",
        "when_to_use": "distribution.histogram",
        "required_parameters": [
          "source_file",
          "metric"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "distribution / kernel_density",
      "plugin_source": "distribution-analysis",
      "plugin_source_label": "Distribution Analysis",
      "source": "../distribution/distribution/kernel_density.html",
      "output": "distribution__kernel_density.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1400,
        "height": 901
      },
      "stats": {
        "byte_count": 43762,
        "non_white_ratio": 0.07581893134612336,
        "edge_ink_ratio": 0.006010609821385117,
        "crop_risk_ink_ratio": 0.0021246800907817856,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.005426069798988778,
        "bottom_edge_ink_ratio": 0.007380952380952381,
        "left_edge_ink_ratio": 0.013565174497471945
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "distribution.kernel_density",
        "grammar": "distribution.kernel_density",
        "metrics": "Units",
        "dimensions": null,
        "periods": "~Aug-2016, ~Aug-2017",
        "trace_widths": null,
        "source_reference": "kernel_density"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Stripplot Small Multiples of Units by Company",
          "~Aug 2017 vs ~Aug 2016, through 2017 08 27"
        ],
        "who": "Mexico hair color",
        "what": "Stripplot Small Multiples of Units by Company",
        "when": "~Aug 2017 vs ~Aug 2016, through 2017 08 27",
        "source": "../distribution/distribution/source_pack/contexts/distribution_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../distribution/distribution/kernel_density.html"
        },
        {
          "label": "context",
          "href": "../distribution/distribution/source_pack/contexts/distribution_context.json"
        },
        {
          "label": "data",
          "href": "../distribution/distribution/distribution_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../distribution/distribution/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../distribution/distribution/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "distribution.kernel_density",
        "status": "context_only",
        "when_to_use": "distribution.kernel_density",
        "required_parameters": [
          "source_file",
          "metric"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "distribution / kernel_density_small_multiples",
      "plugin_source": "distribution-analysis",
      "plugin_source_label": "Distribution Analysis",
      "source": "../distribution/distribution/kernel_density_small_multiples.html",
      "output": "distribution__kernel_density_small_multiples.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1400,
        "height": 901
      },
      "stats": {
        "byte_count": 47183,
        "non_white_ratio": 0.03886237513873474,
        "edge_ink_ratio": 0.006448629970311968,
        "crop_risk_ink_ratio": 0.0021246800907817856,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.005426069798988778,
        "bottom_edge_ink_ratio": 0.007380952380952381,
        "left_edge_ink_ratio": 0.01578493032433099
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "distribution.kernel_density",
        "grammar": "distribution.kernel_density",
        "metrics": "Units",
        "dimensions": null,
        "periods": "~Aug-2016, ~Aug-2017",
        "trace_widths": null,
        "source_reference": "kernel_density_small_mul..."
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Stripplot Small Multiples of Units by Company",
          "~Aug 2017 vs ~Aug 2016, through 2017 08 27"
        ],
        "who": "Mexico hair color",
        "what": "Stripplot Small Multiples of Units by Company",
        "when": "~Aug 2017 vs ~Aug 2016, through 2017 08 27",
        "source": "../distribution/distribution/source_pack/contexts/distribution_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../distribution/distribution/kernel_density_small_multiples.html"
        },
        {
          "label": "context",
          "href": "../distribution/distribution/source_pack/contexts/distribution_context.json"
        },
        {
          "label": "data",
          "href": "../distribution/distribution/distribution_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../distribution/distribution/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../distribution/distribution/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "distribution.kernel_density",
        "status": "context_only",
        "when_to_use": "distribution.kernel_density",
        "required_parameters": [
          "source_file",
          "metric"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "distribution / stripplot",
      "plugin_source": "distribution-analysis",
      "plugin_source_label": "Distribution Analysis",
      "source": "../distribution/distribution/stripplot.html",
      "output": "distribution__stripplot.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1400,
        "height": 901
      },
      "stats": {
        "byte_count": 21752,
        "non_white_ratio": 0.004874742349770097,
        "edge_ink_ratio": 0.006010609821385117,
        "crop_risk_ink_ratio": 0.0021246800907817856,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.005426069798988778,
        "bottom_edge_ink_ratio": 0.007380952380952381,
        "left_edge_ink_ratio": 0.013565174497471945
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "distribution.stripplot",
        "grammar": "distribution.stripplot",
        "metrics": "Units",
        "dimensions": null,
        "periods": "~Aug-2016, ~Aug-2017",
        "trace_widths": null,
        "source_reference": "stripplot"
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Stripplot Small Multiples of Units by Company",
          "~Aug 2017 vs ~Aug 2016, through 2017 08 27"
        ],
        "who": "Mexico hair color",
        "what": "Stripplot Small Multiples of Units by Company",
        "when": "~Aug 2017 vs ~Aug 2016, through 2017 08 27",
        "source": "../distribution/distribution/source_pack/contexts/distribution_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../distribution/distribution/stripplot.html"
        },
        {
          "label": "context",
          "href": "../distribution/distribution/source_pack/contexts/distribution_context.json"
        },
        {
          "label": "data",
          "href": "../distribution/distribution/distribution_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../distribution/distribution/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../distribution/distribution/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "distribution.stripplot",
        "status": "context_only",
        "when_to_use": "distribution.stripplot",
        "required_parameters": [
          "source_file",
          "metric"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "distribution / stripplot_small_multiples",
      "plugin_source": "distribution-analysis",
      "plugin_source_label": "Distribution Analysis",
      "source": "../distribution/distribution/stripplot_small_multiples.html",
      "output": "distribution__stripplot_small_multiples.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1400,
        "height": 901
      },
      "stats": {
        "byte_count": 29707,
        "non_white_ratio": 0.0092040589820834,
        "edge_ink_ratio": 0.006448629970311968,
        "crop_risk_ink_ratio": 0.0021246800907817856,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.005426069798988778,
        "bottom_edge_ink_ratio": 0.007380952380952381,
        "left_edge_ink_ratio": 0.01578493032433099
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "distribution.stripplot",
        "grammar": "distribution.stripplot",
        "metrics": "Units",
        "dimensions": null,
        "periods": "~Aug-2016, ~Aug-2017",
        "trace_widths": null,
        "source_reference": "stripplot_small_multiple..."
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Stripplot Small Multiples of Units by Company",
          "~Aug 2017 vs ~Aug 2016, through 2017 08 27"
        ],
        "who": "Mexico hair color",
        "what": "Stripplot Small Multiples of Units by Company",
        "when": "~Aug 2017 vs ~Aug 2016, through 2017 08 27",
        "source": "../distribution/distribution/source_pack/contexts/distribution_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../distribution/distribution/stripplot_small_multiples.html"
        },
        {
          "label": "context",
          "href": "../distribution/distribution/source_pack/contexts/distribution_context.json"
        },
        {
          "label": "data",
          "href": "../distribution/distribution/distribution_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../distribution/distribution/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../distribution/distribution/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "distribution.stripplot",
        "status": "context_only",
        "when_to_use": "distribution.stripplot",
        "required_parameters": [
          "source_file",
          "metric"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "set_overlap / set_overlap_small_multiples / upset_small_multiples",
      "plugin_source": "set-overlap-analysis",
      "plugin_source_label": "Set Overlap Analysis",
      "source": "../set_overlap/set_overlap_small_multiples/upset_small_multiples.html",
      "output": "set_overlap__set_overlap_small_multiples__upset_small_multiples.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 1090,
        "height": 1971
      },
      "stats": {
        "byte_count": 96300,
        "non_white_ratio": 0.11923626529633818,
        "edge_ink_ratio": 0.0006247944755014798,
        "crop_risk_ink_ratio": 3.266906239790918e-05,
        "top_edge_ink_ratio": 9.174311926605505e-05,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0018772196854388635
      },
      "quality_flags": [],
      "context_summary": {
        "capability": null,
        "grammar": null,
        "metrics": null,
        "dimensions": null,
        "periods": null,
        "trace_widths": null,
        "source_reference": null
      },
      "title_context": {
        "lines": [
          "Category market overlap",
          "UpSet small multiples: Product_Id overlap by Market",
          "All"
        ],
        "who": "Category market overlap",
        "what": "UpSet small multiples: Product_Id overlap by Market",
        "when": "All",
        "source": "../set_overlap/set_overlap_small_multiples/upset_small_multiples.html"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../set_overlap/set_overlap_small_multiples/upset_small_multiples.html"
        },
        {
          "label": "context",
          "href": "../set_overlap/set_overlap_small_multiples/set_overlap_context.json"
        },
        {
          "label": "data",
          "href": "../set_overlap/set_overlap_small_multiples/set_overlap_set_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../set_overlap/set_overlap_small_multiples/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../set_overlap/set_overlap_small_multiples/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "set_overlap.upset_small_multiples",
        "status": "context_only",
        "when_to_use": "set_overlap",
        "required_parameters": [
          "source_file"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "set_overlap / upset",
      "plugin_source": "set-overlap-analysis",
      "plugin_source_label": "Set Overlap Analysis",
      "source": "../set_overlap/set_overlap/upset.html",
      "output": "set_overlap__upset.png",
      "artifact_type": "html",
      "dimensions": {
        "width": 770,
        "height": 473
      },
      "stats": {
        "byte_count": 20255,
        "non_white_ratio": 0.14265945471019467,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": null,
        "grammar": null,
        "metrics": null,
        "dimensions": null,
        "periods": null,
        "trace_widths": null,
        "source_reference": null
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Venn membership overlap",
          "Current reporting view"
        ],
        "who": "Mexico hair color",
        "what": "Venn membership overlap",
        "when": "Current reporting view",
        "source": "../set_overlap/set_overlap/set_overlap_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../set_overlap/set_overlap/upset.html"
        },
        {
          "label": "context",
          "href": "../set_overlap/set_overlap/set_overlap_context.json"
        },
        {
          "label": "data",
          "href": "../set_overlap/set_overlap/set_overlap_set_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../set_overlap/set_overlap/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../set_overlap/set_overlap/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "set_overlap.upset",
        "status": "context_only",
        "when_to_use": "set_overlap",
        "required_parameters": [
          "source_file"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "set_overlap / venn",
      "plugin_source": "set-overlap-analysis",
      "plugin_source_label": "Set Overlap Analysis",
      "source": "../set_overlap/set_overlap/venn.png",
      "output": "set_overlap__venn.png",
      "artifact_type": "png",
      "dimensions": {
        "width": 1400,
        "height": 900
      },
      "stats": {
        "byte_count": 50473,
        "non_white_ratio": 0.17522698412698412,
        "edge_ink_ratio": 0.005088129321258156,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.016587301587301588,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": null,
        "grammar": null,
        "metrics": null,
        "dimensions": null,
        "periods": null,
        "trace_widths": null,
        "source_reference": null
      },
      "title_context": {
        "lines": [
          "Mexico hair color",
          "Venn membership overlap",
          "Current reporting view"
        ],
        "who": "Mexico hair color",
        "what": "Venn membership overlap",
        "when": "Current reporting view",
        "source": "../set_overlap/set_overlap/set_overlap_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../set_overlap/set_overlap/venn.png"
        },
        {
          "label": "context",
          "href": "../set_overlap/set_overlap/set_overlap_context.json"
        },
        {
          "label": "data",
          "href": "../set_overlap/set_overlap/set_overlap_set_summary.csv"
        },
        {
          "label": "manifest",
          "href": "../set_overlap/set_overlap/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../set_overlap/set_overlap/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "set_overlap.venn",
        "status": "context_only",
        "when_to_use": "set_overlap",
        "required_parameters": [
          "source_file"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "png",
            "formats": [
              "png"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "funnel / funnel_stage_table",
      "plugin_source": "funnel-analysis",
      "plugin_source_label": "Funnel Analysis",
      "source": "../funnel/funnel/funnel_stage_table.html",
      "output": "funnel__funnel_stage_table.png",
      "artifact_type": "table",
      "dimensions": {
        "width": 980,
        "height": 480
      },
      "stats": {
        "byte_count": 61372,
        "non_white_ratio": 0.0815391156462585,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "funnel.stage_table",
        "grammar": "funnel.stage_table",
        "metrics": "Lead readiness funnel",
        "dimensions": null,
        "periods": null,
        "trace_widths": null,
        "source_reference": "funnel_stage_table"
      },
      "title_context": {
        "lines": [
          "Baby CRM extract",
          "Lead readiness funnel in records",
          "Sequential gates"
        ],
        "who": "Baby CRM extract",
        "what": "Lead readiness funnel in records",
        "when": "Sequential gates",
        "source": "../funnel/funnel/funnel_stage_table_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../funnel/funnel/funnel_stage_table.html"
        },
        {
          "label": "context",
          "href": "../funnel/funnel/funnel_stage_table_chart_context.json"
        },
        {
          "label": "data",
          "href": "../funnel/funnel/funnel_stage_table_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../funnel/funnel/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../funnel/funnel/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "funnel.stage_table",
        "status": "context_only",
        "when_to_use": "funnel_stage_table",
        "required_parameters": [
          "source_file"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "statement / pnl_statement_table",
      "plugin_source": "statement-analysis",
      "plugin_source_label": "Statement Analysis",
      "source": "../statement/statement/pnl_statement_table.html",
      "output": "statement__pnl_statement_table.png",
      "artifact_type": "table",
      "dimensions": {
        "width": 1120,
        "height": 658
      },
      "stats": {
        "byte_count": 80554,
        "non_white_ratio": 0.08515658923143725,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "statement.pnl_table",
        "grammar": "statement.pnl_table",
        "metrics": null,
        "dimensions": null,
        "periods": null,
        "trace_widths": null,
        "source_reference": "pnl_statement_table"
      },
      "title_context": {
        "lines": [
          "SoftCons International Inc.",
          "Profit and loss statement in mUSD",
          "2012..2015 PL and AC (FC)"
        ],
        "who": "SoftCons International Inc.",
        "what": "Profit and loss statement in mUSD",
        "when": "2012..2015 PL and AC (FC)",
        "source": "../statement/statement/pnl_statement_table_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../statement/statement/pnl_statement_table.html"
        },
        {
          "label": "context",
          "href": "../statement/statement/pnl_statement_table_chart_context.json"
        },
        {
          "label": "data",
          "href": "../statement/statement/pnl_statement_table_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../statement/statement/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../statement/statement/used_recipe.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "statement.pnl_table",
        "status": "context_only",
        "when_to_use": "pnl_statement_table",
        "required_parameters": [
          "source_file"
        ],
        "optional_parameters": [],
        "outputs": [
          {
            "artifact_type": "html",
            "formats": [
              "html"
            ]
          }
        ]
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      }
    },
    {
      "label": "attributes / attribute_bridge_table",
      "plugin_source": "attribute-tables",
      "plugin_source_label": "Attribute Tables",
      "source": "../attributes/attributes/attribute_bridge_table.html",
      "output": "attributes__attribute_bridge_table.png",
      "artifact_type": "table",
      "dimensions": {
        "width": 1360,
        "height": 578
      },
      "stats": {
        "byte_count": 92391,
        "non_white_ratio": 0.07419092204355791,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "attributes.attribute_bridge_table",
        "grammar": "attribute_bridge_table",
        "metrics": "current_n, current_share, current_delta +5",
        "dimensions": "signal_bundle, alignment",
        "periods": null,
        "trace_widths": null,
        "source_reference": "attribute_bridge_table"
      },
      "title_context": {
        "lines": [
          "Attribute evidence",
          "Attribute Bridge Table",
          "Current reporting view"
        ],
        "who": "Attribute evidence",
        "what": "Attribute Bridge Table",
        "when": "Current reporting view",
        "source": "../attributes/attributes/attribute_bridge_table_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../attributes/attributes/attribute_bridge_table.html"
        },
        {
          "label": "context",
          "href": "../attributes/attributes/attribute_bridge_table_chart_context.json"
        },
        {
          "label": "data",
          "href": "../attributes/attributes/attribute_bridge_table_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../attributes/attributes/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../attributes/attributes/attribute_table_catalog.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "attributes.attribute_bridge_table",
        "plugin": "attribute-tables",
        "catalog_path": "modules/pdp/attribute_table_catalog.json",
        "status": "available",
        "when_to_use": "Use when the report needs to compare current winners with emerging signals and explicitly show alignment, divergence, or one-sided support.",
        "required_parameters": [
          "package_dir"
        ],
        "optional_parameters": [
          "output_dir",
          "table_keys"
        ],
        "outputs": [
          {
            "artifact_type": "table",
            "formats": [
              "csv",
              "html"
            ]
          },
          {
            "artifact_type": "manifest",
            "formats": [
              "json"
            ]
          }
        ],
        "execution_contract": {
          "entry_point": "modules.pdp.attribute_table_templates.build_attribute_tables_from_package",
          "cli": "scripts/build_attribute_table_artifacts.py",
          "required_parameters": [
            "package_dir"
          ],
          "optional_parameters": [
            "output_dir",
            "table_keys"
          ],
          "deterministic_boundary": "The table builder reads package CSVs, selects rows, formats values, writes CSV/HTML artifacts, and returns a manifest. The model chooses the table and interprets the rows, but does not compute or render the table."
        },
        "object_type": "table"
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      },
      "display_row_limit": 5
    },
    {
      "label": "attributes / attribute_bundle_comparison_table",
      "plugin_source": "attribute-tables",
      "plugin_source_label": "Attribute Tables",
      "source": "../attributes/attributes/attribute_bundle_comparison_table.html",
      "output": "attributes__attribute_bundle_comparison_table.png",
      "artifact_type": "table",
      "dimensions": {
        "width": 1360,
        "height": 525
      },
      "stats": {
        "byte_count": 84612,
        "non_white_ratio": 0.07701540616246498,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "attributes.attribute_bundle_comparison_table",
        "grammar": "attribute_bundle_comparison_table",
        "metrics": "focus_n, baseline_n, focus_share +4",
        "dimensions": "layer, comparison, signal_bundle",
        "periods": null,
        "trace_widths": null,
        "source_reference": "attribute_bundle_compari..."
      },
      "title_context": {
        "lines": [
          "Attribute evidence",
          "Attribute Bundle Comparison Table",
          "Current reporting view"
        ],
        "who": "Attribute evidence",
        "what": "Attribute Bundle Comparison Table",
        "when": "Current reporting view",
        "source": "../attributes/attributes/attribute_bundle_comparison_table_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../attributes/attributes/attribute_bundle_comparison_table.html"
        },
        {
          "label": "context",
          "href": "../attributes/attributes/attribute_bundle_comparison_table_chart_context.json"
        },
        {
          "label": "data",
          "href": "../attributes/attributes/attribute_bundle_comparison_table_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../attributes/attributes/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../attributes/attributes/attribute_table_catalog.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "attributes.attribute_bundle_comparison_table",
        "plugin": "attribute-tables",
        "catalog_path": "modules/pdp/attribute_table_catalog.json",
        "status": "available",
        "when_to_use": "Use when the report needs exact bundle support for winning-now or emerging-signal rows, including focus/baseline counts, shares, delta, index, and brand breadth.",
        "required_parameters": [
          "package_dir"
        ],
        "optional_parameters": [
          "output_dir",
          "table_keys"
        ],
        "outputs": [
          {
            "artifact_type": "table",
            "formats": [
              "csv",
              "html"
            ]
          },
          {
            "artifact_type": "manifest",
            "formats": [
              "json"
            ]
          }
        ],
        "execution_contract": {
          "entry_point": "modules.pdp.attribute_table_templates.build_attribute_tables_from_package",
          "cli": "scripts/build_attribute_table_artifacts.py",
          "required_parameters": [
            "package_dir"
          ],
          "optional_parameters": [
            "output_dir",
            "table_keys"
          ],
          "deterministic_boundary": "The table builder reads package CSVs, selects rows, formats values, writes CSV/HTML artifacts, and returns a manifest. The model chooses the table and interprets the rows, but does not compute or render the table."
        },
        "object_type": "table"
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      },
      "display_row_limit": 5
    },
    {
      "label": "attributes / product_signal_evidence_table",
      "plugin_source": "attribute-tables",
      "plugin_source_label": "Attribute Tables",
      "source": "../attributes/attributes/product_signal_evidence_table.html",
      "output": "attributes__product_signal_evidence_table.png",
      "artifact_type": "table",
      "dimensions": {
        "width": 1360,
        "height": 1233
      },
      "stats": {
        "byte_count": 201591,
        "non_white_ratio": 0.060707385143838555,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "attributes.product_signal_evidence_table",
        "grammar": "product_signal_evidence_table",
        "metrics": "rating, reviews",
        "dimensions": "cohort, rank, brand +2",
        "periods": null,
        "trace_widths": null,
        "source_reference": "product_signal_evidence_..."
      },
      "title_context": {
        "lines": [
          "Attribute evidence",
          "Product Signal Evidence Table",
          "Current reporting view"
        ],
        "who": "Attribute evidence",
        "what": "Product Signal Evidence Table",
        "when": "Current reporting view",
        "source": "../attributes/attributes/product_signal_evidence_table_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../attributes/attributes/product_signal_evidence_table.html"
        },
        {
          "label": "context",
          "href": "../attributes/attributes/product_signal_evidence_table_chart_context.json"
        },
        {
          "label": "data",
          "href": "../attributes/attributes/product_signal_evidence_table_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../attributes/attributes/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../attributes/attributes/attribute_table_catalog.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "attributes.product_signal_evidence_table",
        "plugin": "attribute-tables",
        "catalog_path": "modules/pdp/attribute_table_catalog.json",
        "status": "available",
        "when_to_use": "Use when the report needs product-level grounding for selected bundles, standout examples, or PDP/review reality checks; prefer image cards in the report narrative and this table as compact validation detail.",
        "required_parameters": [
          "package_dir"
        ],
        "optional_parameters": [
          "output_dir",
          "table_keys"
        ],
        "outputs": [
          {
            "artifact_type": "table",
            "formats": [
              "csv",
              "html"
            ]
          },
          {
            "artifact_type": "manifest",
            "formats": [
              "json"
            ]
          }
        ],
        "execution_contract": {
          "entry_point": "modules.pdp.attribute_table_templates.build_attribute_tables_from_package",
          "cli": "scripts/build_attribute_table_artifacts.py",
          "required_parameters": [
            "package_dir"
          ],
          "optional_parameters": [
            "output_dir",
            "table_keys"
          ],
          "deterministic_boundary": "The table builder reads package CSVs, selects rows, formats values, writes CSV/HTML artifacts, and returns a manifest. The model chooses the table and interprets the rows, but does not compute or render the table."
        },
        "object_type": "table"
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      },
      "display_row_limit": 10
    },
    {
      "label": "attributes / rank_weighted_visibility_table",
      "plugin_source": "attribute-tables",
      "plugin_source_label": "Attribute Tables",
      "source": "../attributes/attributes/rank_weighted_visibility_table.html",
      "output": "attributes__rank_weighted_visibility_table.png",
      "artifact_type": "table",
      "dimensions": {
        "width": 1360,
        "height": 505
      },
      "stats": {
        "byte_count": 72523,
        "non_white_ratio": 0.06877111240535819,
        "edge_ink_ratio": 0.0,
        "crop_risk_ink_ratio": 0.0,
        "top_edge_ink_ratio": 0.0,
        "right_edge_ink_ratio": 0.0,
        "bottom_edge_ink_ratio": 0.0,
        "left_edge_ink_ratio": 0.0
      },
      "quality_flags": [],
      "context_summary": {
        "capability": "attributes.rank_weighted_visibility_table",
        "grammar": "rank_weighted_visibility_table",
        "metrics": "gross_weight, incremental, cumulative +3",
        "dimensions": "rank, lane",
        "periods": null,
        "trace_widths": null,
        "source_reference": "rank_weighted_visibility..."
      },
      "title_context": {
        "lines": [
          "Attribute evidence",
          "Rank Weighted Visibility Table",
          "Current reporting view"
        ],
        "who": "Attribute evidence",
        "what": "Rank Weighted Visibility Table",
        "when": "Current reporting view",
        "source": "../attributes/attributes/rank_weighted_visibility_table_chart_context.json"
      },
      "sidecars": [
        {
          "label": "source",
          "href": "../attributes/attributes/rank_weighted_visibility_table.html"
        },
        {
          "label": "context",
          "href": "../attributes/attributes/rank_weighted_visibility_table_chart_context.json"
        },
        {
          "label": "data",
          "href": "../attributes/attributes/rank_weighted_visibility_table_chart_data.csv"
        },
        {
          "label": "manifest",
          "href": "../attributes/attributes/source_pack/manifest.json"
        },
        {
          "label": "recipe",
          "href": "../attributes/attributes/attribute_table_catalog.json"
        }
      ],
      "artifact_contract": {
        "capability_id": "attributes.rank_weighted_visibility_table",
        "plugin": "attribute-tables",
        "catalog_path": "modules/pdp/attribute_table_catalog.json",
        "status": "available",
        "when_to_use": "Use when the report needs to ground claims about rank-weighted shelf visibility, incremental lane contribution, or robustness across alpha assumptions.",
        "required_parameters": [
          "package_dir"
        ],
        "optional_parameters": [
          "output_dir",
          "table_keys"
        ],
        "outputs": [
          {
            "artifact_type": "table",
            "formats": [
              "csv",
              "html"
            ]
          },
          {
            "artifact_type": "manifest",
            "formats": [
              "json"
            ]
          }
        ],
        "execution_contract": {
          "entry_point": "modules.pdp.attribute_table_templates.build_attribute_tables_from_package",
          "cli": "scripts/build_attribute_table_artifacts.py",
          "required_parameters": [
            "package_dir"
          ],
          "optional_parameters": [
            "output_dir",
            "table_keys"
          ],
          "deterministic_boundary": "The table builder reads package CSVs, selects rows, formats values, writes CSV/HTML artifacts, and returns a manifest. The model chooses the table and interprets the rows, but does not compute or render the table."
        },
        "object_type": "table"
      },
      "artifact_readiness": {
        "ready": true,
        "required_sidecars": [
          "source",
          "context",
          "data",
          "manifest",
          "recipe"
        ],
        "missing_sidecars": [],
        "broken_sidecars": [],
        "issues": []
      },
      "display_row_limit": 5
    }
  ]
}

SHA-256: 28fa77ceadfb33e6b0a0089d0fb1b757142e0a3b92e475cee0bbfed8966c9252