validate

Validate the structural and reference integrity of this NetworkSpec, returning every problem found (not just the first). An empty list means the spec is well-formed and safe to pass to SupplyChainBuilder.build.

Checks:

  • at least one node; no duplicate item or node names; no node named with the NodeSpec.EXTERNAL_SUPPLIER sentinel;

  • at least one root (a node whose parent is the external supplier);

  • every node parent resolves (a node name or the sentinel);

  • no cycles in the supplier graph;

  • cross-dock nodes carry no inventory;

  • every itemTypeName (inventories and demand generators) resolves;

  • every demand-generator node resolves;

  • shipment formation only under TransportStrategySpec.PerIHPTimeBased, with valid per-option parameters;

  • per-node cost-override keys resolve to node names.

Parameter sanity beyond this (e.g. reorderQty > 0) is left to the framework's own requires at build time; this layer focuses on the structural/reference integrity that is the spec layer's value-add.