digraph ipu_stack_package_partition {
  graph [rankdir=LR, bgcolor="white", fontname="DejaVu Sans", fontsize=17,
         label="ipu_codegen::config — package build/run detail", labelloc=t, labeljust=l, pad=0.2, nodesep=0.3, ranksep=0.75, newrank=true, overlap=false, splines=polyline, outputorder=edgesfirst];
  node [fontname="DejaVu Sans", fontsize=9, style="rounded,filled", color="#52606d", penwidth=0.8];
  edge [fontname="DejaVu Sans", fontsize=7, color="#52606d", arrowsize=0.55, penwidth=0.8];
  subgraph cluster_primary { label="primary nodes"; color="#d9e8fb"; style="rounded";
    f5 [label="ipu_codegen::config::HardwareTarget::cost_model", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub const fn cost_model(self) -> Ipu21CostModel — crates/ipu-codegen/src/config.rs:223"];
    f6 [label="ipu_codegen::config::HardwareTarget::memory_constraints", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub const fn memory_constraints(self) -> HardwareMemoryConstraints — crates/ipu-codegen/src/config.rs:228"];
    f4 [label="ipu_codegen::config::PlannerSearchDomain::active_tile_counts", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn active_tile_counts<'a>( &self, capacity: u16, shapes: impl IntoIterator<Item = &'a TensorShape>, ) -> Vec<u16> — crates/ipu-codegen/src/config.rs:145"];
    f0 [label="ipu_codegen::config::PlannerSearchDomain::default", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="fn default() -> Self — crates/ipu-codegen/src/config.rs:115"];
    f2 [label="ipu_codegen::config::PlannerSearchDomain::permits_precision", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn permits_precision(&self, operator: OperatorClass, precision: Precision) -> bool — crates/ipu-codegen/src/config.rs:137"];
    f3 [label="ipu_codegen::config::PlannerSearchDomain::permits_weight_memory", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn permits_weight_memory(&self, memory_class: MemoryClass) -> bool — crates/ipu-codegen/src/config.rs:141"];
    f1 [label="ipu_codegen::config::PlannerSearchDomain::precisions", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn precisions(&self, operator: OperatorClass) -> &[Precision] — crates/ipu-codegen/src/config.rs:132"];
    f7 [label="ipu_codegen::config::ProfilingConfig::records_overall_time", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub const fn records_overall_time(self) -> bool — crates/ipu-codegen/src/config.rs:244"];
    f8 [label="ipu_codegen::config::ProfilingConfig::records_steps", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub const fn records_steps(self) -> bool — crates/ipu-codegen/src/config.rs:247"];
    f9 [label="ipu_codegen::config::candidate_active_tile_counts", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn candidate_active_tile_counts(capacity: u16) -> Vec<u16> — crates/ipu-codegen/src/config.rs:335"];
    f10 [label="ipu_codegen::config::shape_aware_active_tile_counts", shape=box, fillcolor="#d9e8fb", color="#2166ac", tooltip="pub(crate) fn shape_aware_active_tile_counts<'a>( capacity: u16, shapes: impl IntoIterator<Item = &'a TensorShape>, ) -> Vec<u16> — crates/ipu-codegen/src/config.rs:360"];
    t2 [label="ipu_codegen::config::AttentionStrategy\n«enum»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/config.rs:42"];
    t1 [label="ipu_codegen::config::ConversionStreamingPolicy\n«enum»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/config.rs:34"];
    t5 [label="ipu_codegen::config::HardwareMemoryConstraints\n«struct»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/config.rs:75"];
    t3 [label="ipu_codegen::config::OperatorClass\n«enum»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/config.rs:50"];
    t0 [label="ipu_codegen::config::PipelineConfig\n«struct»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/config.rs:10"];
    t4 [label="ipu_codegen::config::PlannerSearchDomain\n«struct»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/config.rs:59"];
    t6 [label="ipu_codegen::config::ProfilingConfig\n«enum»", shape=ellipse, style="filled,dashed", fillcolor="#d9e8fb", color="#7b8794", tooltip="crates/ipu-codegen/src/config.rs:84"];
  }
  subgraph cluster_external { label="outgoing references — click to open target partition"; color="#d9d9d9"; style="rounded,dashed";
    xt0 [label="ipu_codegen::cost::Ipu21CostModel\n«struct»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-codegen-cost.svg", target="_top", tooltip="open defining partition"];
    xt1 [label="ipu_codegen::graph::TensorShape\n«struct»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-codegen-graph.svg", target="_top", tooltip="open defining partition"];
    xt2 [label="ipu_codegen::layout::MemoryClass\n«enum»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-codegen-layout.svg", target="_top", tooltip="open defining partition"];
    xt3 [label="ipu_codegen::operator::Precision\n«enum»", shape=ellipse, fillcolor="#f5f5f5", color="#9aa5b1", style="filled,dashed", URL="ipu-codegen-operator.svg", target="_top", tooltip="open defining partition"];
  }
  f0 -> t2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f0 -> t3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f0 -> xt2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f0 -> xt3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f1 -> t3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f1 -> xt3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f2 -> f1 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f2 -> t3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f2 -> xt3 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f3 -> xt2 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f4 -> f9 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f4 -> f10 [color="#2166ac", style="solid", tooltip="rustc MIR call edge"];
  f4 -> xt1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f5 -> xt0 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f6 -> t5 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  f10 -> xt1 [style=dashed, color="#9aa5b1", arrowhead=none, constraint=false, tooltip="uses workspace type"];
  legend [shape=note, style="filled", fillcolor="#ffffff", color="#9aa5b1", fontsize=8,
          label="Solid: MIR-resolved call   Dotted: source fallback\nDashed, no arrow: uses type   Dashed node: link to another partition\nBlue: build   Green: run   Purple: shared"];
}
