///|
/// The smallest non-empty case, useful for embedding and smoke tests.
pub fn micro_cvrp_sample() -> @core.VrpInstance {
  @core.make_instance(
    "micro-cvrp",
    @core.ProblemVariant::CVRP,
    @core.Depot::new(0.0, 0.0),
    @core.VehicleProfile::new(8.0, fleet_size=2),
    [
      @core.Customer::new(1, 1.0, 0.0, 2.0),
      @core.Customer::new(2, 0.0, 2.0, 3.0),
      @core.Customer::new(3, 3.0, 0.0, 1.0),
    ],
  )
}

///|
/// A deliberately tight VRPTW case for testing waiting and lateness logic.
pub fn tight_vrptw_sample() -> @core.VrpInstance {
  @core.make_instance(
    "tight-vrptw",
    @core.ProblemVariant::VRPTW,
    @core.Depot::new(0.0, 0.0, due_time=80.0),
    @core.VehicleProfile::new(12.0, fleet_size=3, max_route_duration=80.0),
    [
      @core.Customer::new(
        1,
        3.0,
        0.0,
        2.0,
        ready_time=0.0,
        due_time=12.0,
        service_time=2.0,
      ),
      @core.Customer::new(
        2,
        0.0,
        3.0,
        2.0,
        ready_time=8.0,
        due_time=25.0,
        service_time=2.0,
      ),
      @core.Customer::new(
        3,
        4.0,
        4.0,
        3.0,
        ready_time=20.0,
        due_time=38.0,
        service_time=3.0,
      ),
      @core.Customer::new(
        4,
        1.0,
        5.0,
        2.0,
        ready_time=30.0,
        due_time=48.0,
        service_time=2.0,
      ),
      @core.Customer::new(
        5,
        6.0,
        1.0,
        1.0,
        ready_time=40.0,
        due_time=60.0,
        service_time=2.0,
      ),
      @core.Customer::new(
        6,
        2.0,
        6.0,
        1.0,
        ready_time=50.0,
        due_time=75.0,
        service_time=2.0,
      ),
    ],
  )
}

///|
/// A structurally valid but capacity-infeasible case for error-path tests.
pub fn infeasible_capacity_sample() -> @core.VrpInstance {
  @core.make_instance(
    "infeasible-capacity",
    @core.ProblemVariant::CVRP,
    @core.Depot::new(0.0, 0.0),
    @core.VehicleProfile::new(1.0, fleet_size=1),
    [
      @core.Customer::new(1, 1.0, 0.0, 2.0),
      @core.Customer::new(2, 0.0, 1.0, 2.0),
    ],
  )
}

///|
/// A moderate deterministic stress case generated from a documented seed.
pub fn generated_stress_sample() -> @core.VrpInstance {
  generate_cvrp(
    GeneratorConfig::default().tune(
      name="generated-stress",
      customer_count=48,
      vehicle_capacity=70.0,
      fleet_size=10,
      max_demand=10,
      seed=2026,
    ),
  )
}

///|
/// All built-in examples, including edge cases used by the test suite.
pub fn all_sample_names() -> Array[String] {
  [
    "small-cvrp", "urban-vrptw", "balanced-dispatch", "micro-cvrp", "tight-vrptw",
    "infeasible-capacity", "generated-stress",
  ]
}