{
  "scope": "Two self-authored synthetic fixtures traced in a local private pic2svg pipeline. No hosted upload or AI upscaler tested. This packet audits saved outputs; it does not reproduce the private tracing pipeline. Future hosted results may differ.",
  "software": {
    "fixture_Pillow": "12.3.0",
    "tracer_vtracer": "0.6.15",
    "renderer_CairoSVG": "2.9.1"
  },
  "method": "The native 384 px reference is drawn from geometry at 1536 px and downsampled with Lanczos for antialiasing. Original 96 px is generated from that reference. Upscales derive only from the original 96 px input. All cases use the same auto/Balanced settings, 600,000-pixel area limit, 3072-pixel width limit and color precision 8. Automatic mode changes are part of the pipeline and prevent attributing changes solely to resampling. SVGs are rendered at 384 \u00d7 384 against the same opaque fixture reference.",
  "metrics": "Nodes: L/C endpoints plus Z closures, excluding M moves. Bytes normalized to LF. RGB MAE mean absolute error per channel; foreground union where any channel<240. Changed pixel if any channel differs>32. Foreground IoU uses the same threshold. Gap is fixed interior ROI x249:252,y120:265, white if all channels>=245. Dot ROI x176:197,y80:101; coral match Euclidean RGB distance<45. Metrics are disclosed diagnostics, not perceptual-quality scores.",
  "reference_feature_metrics": {
    "rgb_mae_0_to_255": 0.0,
    "pixels_max_channel_error_gt32": 0,
    "pixels_max_channel_error_gt32_pct": 0.0,
    "foreground_union_rgb_mae": 0.0,
    "foreground_iou": 1.0,
    "gap_white_pixels": 435,
    "gap_total_pixels": 435,
    "gap_white_fraction": 1.0,
    "dot_nonwhite_pixels_in_roi": 94,
    "dot_coral_pixels_rgb_distance_lt45": 72,
    "dot_center_rgb": [
      220,
      80,
      60
    ]
  },
  "rows": [
    {
      "fixture": "tiny_features",
      "variant": "original_96",
      "input_pixels": [
        96,
        96
      ],
      "auto_mode": "polygon",
      "paths": 3,
      "nodes": 16,
      "svg_bytes_lf": 544,
      "metrics": {
        "rgb_mae_0_to_255": 2.48442,
        "pixels_max_channel_error_gt32": 1791,
        "pixels_max_channel_error_gt32_pct": 1.2146,
        "foreground_union_rgb_mae": 4.25125,
        "foreground_iou": 0.97703,
        "gap_white_pixels": 0,
        "gap_total_pixels": 435,
        "gap_white_fraction": 0.0,
        "dot_nonwhite_pixels_in_roi": 0,
        "dot_coral_pixels_rgb_distance_lt45": 0,
        "dot_center_rgb": [
          254,
          254,
          254
        ]
      },
      "input": "tiny_features/original_96/input.png",
      "svg": "tiny_features/original_96/output.svg",
      "render": "tiny_features/original_96/render384.png"
    },
    {
      "fixture": "tiny_features",
      "variant": "nearest4x_384",
      "input_pixels": [
        384,
        384
      ],
      "auto_mode": "spline",
      "paths": 5,
      "nodes": 59,
      "svg_bytes_lf": 2021,
      "metrics": {
        "rgb_mae_0_to_255": 0.75538,
        "pixels_max_channel_error_gt32": 1133,
        "pixels_max_channel_error_gt32_pct": 0.76836,
        "foreground_union_rgb_mae": 1.54165,
        "foreground_iou": 0.986611,
        "gap_white_pixels": 435,
        "gap_total_pixels": 435,
        "gap_white_fraction": 1.0,
        "dot_nonwhite_pixels_in_roi": 48,
        "dot_coral_pixels_rgb_distance_lt45": 0,
        "dot_center_rgb": [
          20,
          113,
          146
        ]
      },
      "input": "tiny_features/nearest4x_384/input.png",
      "svg": "tiny_features/nearest4x_384/output.svg",
      "render": "tiny_features/nearest4x_384/render384.png"
    },
    {
      "fixture": "tiny_features",
      "variant": "lanczos4x_384",
      "input_pixels": [
        384,
        384
      ],
      "auto_mode": "spline",
      "paths": 13,
      "nodes": 483,
      "svg_bytes_lf": 22048,
      "metrics": {
        "rgb_mae_0_to_255": 1.14745,
        "pixels_max_channel_error_gt32": 1768,
        "pixels_max_channel_error_gt32_pct": 1.199,
        "foreground_union_rgb_mae": 2.50778,
        "foreground_iou": 0.987435,
        "gap_white_pixels": 435,
        "gap_total_pixels": 435,
        "gap_white_fraction": 1.0,
        "dot_nonwhite_pixels_in_roi": 58,
        "dot_coral_pixels_rgb_distance_lt45": 0,
        "dot_center_rgb": [
          20,
          98,
          150
        ]
      },
      "input": "tiny_features/lanczos4x_384/input.png",
      "svg": "tiny_features/lanczos4x_384/output.svg",
      "render": "tiny_features/lanczos4x_384/render384.png"
    },
    {
      "fixture": "tiny_features",
      "variant": "native_reference_384",
      "input_pixels": [
        384,
        384
      ],
      "auto_mode": "spline",
      "paths": 5,
      "nodes": 67,
      "svg_bytes_lf": 3197,
      "metrics": {
        "rgb_mae_0_to_255": 0.76541,
        "pixels_max_channel_error_gt32": 1138,
        "pixels_max_channel_error_gt32_pct": 0.77176,
        "foreground_union_rgb_mae": 1.604,
        "foreground_iou": 0.989125,
        "gap_white_pixels": 435,
        "gap_total_pixels": 435,
        "gap_white_fraction": 1.0,
        "dot_nonwhite_pixels_in_roi": 90,
        "dot_coral_pixels_rgb_distance_lt45": 0,
        "dot_center_rgb": [
          20,
          115,
          146
        ]
      },
      "input": "tiny_features/native_reference_384/input.png",
      "svg": "tiny_features/native_reference_384/output.svg",
      "render": "tiny_features/native_reference_384/render384.png"
    },
    {
      "fixture": "simple_control",
      "variant": "original_96",
      "input_pixels": [
        96,
        96
      ],
      "auto_mode": "polygon",
      "paths": 3,
      "nodes": 16,
      "svg_bytes_lf": 544,
      "metrics": {
        "rgb_mae_0_to_255": 0.59571,
        "pixels_max_channel_error_gt32": 895,
        "pixels_max_channel_error_gt32_pct": 0.60696,
        "foreground_union_rgb_mae": 1.20121,
        "foreground_iou": 0.988103
      },
      "input": "simple_control/original_96/input.png",
      "svg": "simple_control/original_96/output.svg",
      "render": "simple_control/original_96/render384.png"
    },
    {
      "fixture": "simple_control",
      "variant": "nearest4x_384",
      "input_pixels": [
        384,
        384
      ],
      "auto_mode": "polygon",
      "paths": 3,
      "nodes": 44,
      "svg_bytes_lf": 781,
      "metrics": {
        "rgb_mae_0_to_255": 0.59733,
        "pixels_max_channel_error_gt32": 873,
        "pixels_max_channel_error_gt32_pct": 0.59204,
        "foreground_union_rgb_mae": 1.20458,
        "foreground_iou": 0.987544
      },
      "input": "simple_control/nearest4x_384/input.png",
      "svg": "simple_control/nearest4x_384/output.svg",
      "render": "simple_control/nearest4x_384/render384.png"
    },
    {
      "fixture": "simple_control",
      "variant": "lanczos4x_384",
      "input_pixels": [
        384,
        384
      ],
      "auto_mode": "spline",
      "paths": 11,
      "nodes": 455,
      "svg_bytes_lf": 20947,
      "metrics": {
        "rgb_mae_0_to_255": 0.9733,
        "pixels_max_channel_error_gt32": 1518,
        "pixels_max_channel_error_gt32_pct": 1.02946,
        "foreground_union_rgb_mae": 2.13053,
        "foreground_iou": 0.988818
      },
      "input": "simple_control/lanczos4x_384/input.png",
      "svg": "simple_control/lanczos4x_384/output.svg",
      "render": "simple_control/lanczos4x_384/render384.png"
    },
    {
      "fixture": "simple_control",
      "variant": "native_reference_384",
      "input_pixels": [
        384,
        384
      ],
      "auto_mode": "polygon",
      "paths": 3,
      "nodes": 27,
      "svg_bytes_lf": 650,
      "metrics": {
        "rgb_mae_0_to_255": 0.60355,
        "pixels_max_channel_error_gt32": 778,
        "pixels_max_channel_error_gt32_pct": 0.52762,
        "foreground_union_rgb_mae": 1.21881,
        "foreground_iou": 0.989262
      },
      "input": "simple_control/native_reference_384/input.png",
      "svg": "simple_control/native_reference_384/output.svg",
      "render": "simple_control/native_reference_384/render384.png"
    }
  ],
  "supported_claims": [
    "On the tiny-feature fixture, the original 96 px input produced 3 paths, 16 nodes and 544 bytes; nearest 4\u00d7 produced 5 paths, 59 nodes and 2,021 bytes; Lanczos 4\u00d7 produced 13 paths, 483 nodes and 22,048 bytes; the native 384 px input produced 5 paths, 67 nodes and 3,197 bytes.",
    "The original 96 px render lost the sampled gap: 0 of 435 interior pixels were white. Both upscales and native 384 px had 435 of 435 white pixels.",
    "A nonwhite dot returned after upscaling, but its coral color did not: all four traces had 0 coral-matching pixels in the dot region, compared with 72 in the reference.",
    "On the simple control, nearest 4\u00d7 changed RGB mean absolute error from 0.59571 to 0.59733 while nodes rose from 16 to 44; Lanczos 4\u00d7 raised error to 0.97330 and nodes to 455.",
    "Automatic tracing mode changed between variants. These observations belong to the whole tracing pipeline and do not isolate interpolation as the cause."
  ],
  "caveats": [
    "Two synthetic fixtures do not establish a general upscaling recommendation.",
    "The native reference is drawn from original geometry; it is not an AI-enhanced low-resolution image.",
    "RGB MAE and foreground IoU are diagnostic metrics, not rankings of perceived quality.",
    "Dot retention is not dot fidelity:shape and color changed even in the native 384 px trace.",
    "Private backend source and logs are intentionally excluded. Only fixture generation, saved-output metrics and optional SVG rendering are reproducible from this packet.",
    "No hosted browser preprocessing, deployed API revision, commercial import compatibility or machine cutting was tested."
  ]
}