{
  "schema": "studycommons.hero.provenance.v2",
  "asset_role": "Study Commons public Daily Read hero",
  "slug": "how-does-a-town-council-make-decisions",
  "generation_id": "img-5605e3b287b0cc70c2f28b9d",
  "generator": "QwenImage21Pipeline",
  "model": "Qwen/Qwen-Image-2.1-Turbo",
  "model_revision": "fc13ba1986fcb905854dc8de2f52eee395f49b5b",
  "model_license": "Qwen Research License, non-commercial research/evaluation only; commercial use requires separate permission",
  "model_index_sha256": "97e2febeb19d93cb41fa44807cde8bd42757950b5dffeacdb0331fb2d390cf20",
  "checkpoint_sha256": "37230cd77d377c0be0acc06d628fd8a6e978e23eb2c530b73fa98df54ef62557",
  "renderer_source_sha256": "de2a451bc7c95d530b8428e30cfc8d35a876c701915df1f61ed49165ebfda350",
  "prompt": "Friendly civic editorial photo style of a small Canadian municipal council chamber: curved wooden meeting table with a few occupied chairs, microphones, papers, audience seating; generic, no visible real officials, logos, flags or readable text. Wide 16:9 composition, high-quality natural educational editorial illustration, polished professional image suitable for ages 8 to 11, clear one main subject, attractive lighting, carefully rendered proportions and realistic objects, generous uncluttered composition. No typography, text, captions, labels, diagrams, arrows, signatures, watermarks, logos, collage, frames or split panels.",
  "prompt_sha256": "c5c3782e261ae45d27177a60cc160b223b2bf73da36f6e64ec69104c4e0a3e4a",
  "negative_prompt": "",
  "seed": 2026110119,
  "width": 1312,
  "height": 736,
  "num_inference_steps": 8,
  "true_cfg_scale": 1.0,
  "scheduler": "FlowMatchEulerDiscreteScheduler",
  "sampling": "explicit-checkpoint-8-sigma",
  "sample_sigmas": [
    1.0,
    0.978453,
    0.95418,
    0.926626,
    0.89508,
    0.845148,
    0.704534,
    0.414568
  ],
  "generator_device": "cpu",
  "generator_algorithm": "torch.Generator('cpu').manual_seed(seed)",
  "torch_dtype": "bfloat16",
  "cpu_offload": "model",
  "use_kv_cache": true,
  "vae_tiling": true,
  "lora": null,
  "reference_images": [],
  "gpu": "NVIDIA CUDA (hardware-specific machine details withheld)",
  "runtime": {
    "torch": "2.13.0+cu130",
    "diffusers": "0.41.0",
    "transformers": "5.17.0",
    "cuda": "13.0"
  },
  "job_completed_at": "2026-11-01T12:49:22.868361+00:00",
  "output_png_sha256": "5605e3b287b0cc70c2f28b9d48985e7e0eda3f4b325fa3aa4c38067382e49299",
  "output_png_dimensions": [
    1312,
    736
  ],
  "postprocess": {
    "format": "AVIF",
    "ffmpeg_version": "ffmpeg version 6.1.1-3ubuntu5 Copyright (c) 2000-2023 the FFmpeg developers",
    "filter": "scale=1280:720:force_original_aspect_ratio=increase:flags=lanczos,crop=1280:720",
    "encoder": "libaom-av1",
    "still_picture": 1,
    "crf": 16,
    "bitrate": "0",
    "cpu_used": 6,
    "pix_fmt": "yuv420p",
    "frames": 1,
    "source_png_sha256": "5605e3b287b0cc70c2f28b9d48985e7e0eda3f4b325fa3aa4c38067382e49299",
    "output_avif_sha256": "c358caea268eb26292d131541239a75672c7cc0563a54f5e885da59f91991c76",
    "output_avif_width": 1280,
    "output_avif_height": 720,
    "output_avif_bytes": 60928
  },
  "reproduce": {
    "recipe": "QwenImage21Pipeline.from_pretrained(model_path, dtype=torch.bfloat16); enable_model_cpu_offload(); vae.enable_tiling(); pipeline(prompt=prompt, width=width, height=height, true_cfg_scale=1.0, num_inference_steps=8, sigmas=sample_sigmas, use_kv_cache=True, generator=torch.Generator('cpu').manual_seed(seed)); encode PNG to AVIF using postprocess fields",
    "model_source": "Hugging Face model ID and exact model_revision above, subject to the stated license",
    "verification": "Compare generated PNG and AVIF against SHA-256 fields. Accelerator and software differences may prevent bit-for-bit equality."
  },
  "provenance_note": "Generation parameters and cryptographic integrity chain, not proof of legal ownership or absence of third-party rights. Private machine paths are excluded."
}
