{
  "schema": "MAKNOW_D3D002_SYNTHETIC_FIXTURE_v1.0",
  "fixture_id": "D3D-002-LAB1-BASELINE",
  "asset_id": "SYNTH-PROP-UVPBR-01",
  "rights": "SYNTHETIC_RIGHTS_CLEARED",
  "decision": null,
  "target": {
    "target_ref": "target://D3D-002/GLTF2_STANDARD_MR",
    "material_model": "GLTF2_METALLIC_ROUGHNESS",
    "target_constraint_scope": "STANDARD_DECLARED_TARGET",
    "uv_overlap_policy": "UNIQUE_REQUIRED",
    "channel_packing": "SEPARATE_TEXTURES",
    "packing_convention": null
  },
  "uv": {
    "uv_set": "UV_MAIN",
    "seam_intent": "SEAMS_PLACED_TO_ISOLATE_HIDDEN_AND_HARD_ANGLE_REGIONS",
    "overlap_observation": "NO_UNINTENDED_OVERLAP_OBSERVED_IN_SYNTHETIC_CHECK",
    "stretch_check": {
      "metric": "SYNTHETIC_UV_STRETCH_RATIO_MAX",
      "threshold": {
        "operator": "<=",
        "value": 1.08
      },
      "observed": 1.04,
      "unit": "ratio",
      "evidence_ref": "evidence://fixture/uv-stretch"
    },
    "texel_density_policy": {
      "metric": "SYNTHETIC_TEXELS_PER_METER",
      "target_band": {
        "min": 480,
        "max": 520,
        "unit": "px_per_meter"
      },
      "observed_range": {
        "min": 492,
        "max": 511,
        "unit": "px_per_meter"
      },
      "evidence_ref": "evidence://fixture/texel-density"
    },
    "texel_density_observation": "WITHIN_DECLARED_SYNTHETIC_BAND"
  },
  "texture_resolution": "2048x2048_SYNTHETIC_EXERCISE",
  "channels": [
    {
      "role": "base_color",
      "map_ref": "synthetic://D3D002/base_color",
      "transfer": "SRGB",
      "uv_set": "UV_MAIN",
      "packed_channel": null,
      "evidence_ref": "evidence://fixture/base_color"
    },
    {
      "role": "metallic",
      "map_ref": "synthetic://D3D002/metallic",
      "transfer": "LINEAR",
      "uv_set": "UV_MAIN",
      "packed_channel": null,
      "evidence_ref": "evidence://fixture/metallic"
    },
    {
      "role": "roughness",
      "map_ref": "synthetic://D3D002/roughness",
      "transfer": "LINEAR",
      "uv_set": "UV_MAIN",
      "packed_channel": null,
      "evidence_ref": "evidence://fixture/roughness"
    },
    {
      "role": "normal",
      "map_ref": "synthetic://D3D002/normal",
      "transfer": "LINEAR",
      "uv_set": "UV_MAIN",
      "packed_channel": null,
      "evidence_ref": "evidence://fixture/normal"
    },
    {
      "role": "occlusion",
      "map_ref": "synthetic://D3D002/occlusion",
      "transfer": "LINEAR",
      "uv_set": "UV_MAIN",
      "packed_channel": null,
      "evidence_ref": "evidence://fixture/occlusion"
    }
  ],
  "ai_provenance": {
    "ai_assist_method": "SYNTHETIC_CONCEPT_PATCH_THEN_MANUAL_CLEANUP",
    "source_asset_ref": "synthetic://D3D002/source-board",
    "rights_provenance_ref": "rights://D3D002/SYNTHETIC_RIGHTS_CLEARED",
    "rights_status": "VERIFIED_RIGHTS_CLEARED",
    "manual_edit_log": [
      "edge cleanup recorded",
      "roughness breakup edited manually"
    ]
  },
  "lighting_validation": [
    {
      "lighting_id": "NEUTRAL_STUDIO_SYNTH",
      "observation": "Neutral reference regions remain visually neutral in the supplied synthetic observation, and roughness breakup remains distinguishable at a shallow view angle.",
      "evidence_ref": "evidence://fixture/light-neutral"
    },
    {
      "lighting_id": "WARM_SIDE_SYNTH",
      "observation": "The warm-side light shifts the expected hue while the supplied synthetic observation still shows separable metal/nonmetal response and visible roughness variation.",
      "evidence_ref": "evidence://fixture/light-warm"
    }
  ],
  "interoperability_evidence": {
    "target_ref": "target://D3D-002/GLTF2_STANDARD_MR",
    "binding_checks": [
      {
        "check": "uv_set_binding",
        "expected": "Every used texture role declares UV_MAIN.",
        "observed": "base_color, metallic, roughness, normal, and occlusion each declare uv_set=UV_MAIN.",
        "evidence_ref": "evidence://fixture/interop-uv"
      },
      {
        "check": "channel_binding",
        "expected": "SEPARATE_TEXTURES keeps required roles on distinct map references with no packed channel assignment.",
        "observed": "Each required role has its own synthetic map_ref and packed_channel is null for all five required roles.",
        "evidence_ref": "evidence://fixture/interop-channel"
      }
    ],
    "export_observation": "No export-only result is used as proof of material correctness in this synthetic fixture.",
    "export_only_proof": false
  },
  "learner_task": "Construct the evidence pack and choose a bounded state from visible evidence. The fixture deliberately contains no final_state.",
  "normal_convention": "TANGENT_SPACE_POSITIVE_Y_DECLARED_TARGET"
}
