{
 "experiment": "the-foes-768",
 "title": "the foes, every painter",
 "compares": "the painter",
 "archive": "diffusion-bench-0823_foes-768",
 "columns": [
  "z-image-turbo-bf16",
  "z-image-turbo-bf16\u00b7bare",
  "flux2-klein-4b-bf16",
  "flux2-klein-4b-bf16\u00b7bare",
  "z-image-base-bf16",
  "z-image-base-bf16\u00b7bare",
  "hidream-o1-dev-fp8",
  "hidream-o1-dev-fp8\u00b7bare",
  "chroma1-hd-fp8",
  "chroma1-hd-fp8\u00b7bare",
  "krea2-turbo-fp8",
  "krea2-turbo-fp8\u00b7bare",
  "mage-flow-turbo-int8",
  "mage-flow-turbo-int8\u00b7bare",
  "ernie-image-turbo-bf16",
  "ernie-image-turbo-bf16\u00b7bare",
  "kandinsky5-lite-bf16",
  "kandinsky5-lite-bf16\u00b7bare"
 ],
 "lede": "twelve foes of the cove under every painter. the hardest subject in the set \u2014 anatomy, menace, a silhouette that reads small \u2014 and, in the bare row, each painter's own palette with no style clause at all.",
 "note": "",
 "source": "render-tests",
 "tests": [],
 "internal": false,
 "images": [
  {
   "subject": "FOE \u00b7 Drowned-Hand",
   "row": "",
   "column": "z-image-turbo-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a swollen grey waterlogged hand and forearm reaching up through black water in a flooded sea-cave, skin split at the knuckles, a frayed oilskin cuff at the wrist",
   "prompt_source": "foe.drowned_hand art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-drowned-hand-z-image-turbo-bf16.webp",
   "tile": "img/foe-drowned-hand-z-image-turbo-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_turbo_bf16.safetensors",
   "arm_column": "z-image-turbo-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1301,
   "render_seconds": 1.18,
   "colour": {
    "mean_hue_deg": 39.6,
    "mean_saturation": 0.35,
    "hue_spread_deg": 15.3,
    "resultant_R": 0.9648,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_drowned_hand__ctrl-z-image-turbo__768__s1301.jpg",
   "id": "foe-drowned-hand-z-image-turbo-bf16",
   "archive_id": "foe_drowned_hand__ctrl-z-image-turbo__768__s1301",
   "cell_label": "",
   "at": "2026-08-23T09:56:48+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/ctrl-z-image-turbo",
   "law": "cleared",
   "law_detail": "z-image turbo (bf16) \u2014 Apache-2.0",
   "sid": "foe-drowned-hand-z-image-turbo-bf16"
  },
  {
   "subject": "FOE \u00b7 Drowned-Hand",
   "row": "",
   "column": "z-image-turbo-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a swollen grey waterlogged hand and forearm reaching up through black water in a flooded sea-cave, skin split at the knuckles, a frayed oilskin cuff at the wrist",
   "prompt_source": "foe.drowned_hand art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-drowned-hand-z-image-turbo-bf16-bare.webp",
   "tile": "img/foe-drowned-hand-z-image-turbo-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_turbo_bf16.safetensors",
   "arm_column": "z-image-turbo-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1301,
   "render_seconds": 1.2,
   "colour": {
    "mean_hue_deg": 53.9,
    "mean_saturation": 0.2017,
    "hue_spread_deg": 47.9,
    "resultant_R": 0.7055,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_drowned_hand__ctrl-z-image-turbo__768__bare__s1301.jpg",
   "id": "foe-drowned-hand-z-image-turbo-bf16-bare",
   "archive_id": "foe_drowned_hand__ctrl-z-image-turbo__768__bare__s1301",
   "cell_label": "",
   "at": "2026-08-23T16:42:36+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/ctrl-z-image-turbo",
   "law": "cleared",
   "law_detail": "z-image turbo (bf16) \u2014 Apache-2.0",
   "sid": "foe-drowned-hand-z-image-turbo-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Drowned-Hand",
   "row": "",
   "column": "flux2-klein-4b-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a swollen grey waterlogged hand and forearm reaching up through black water in a flooded sea-cave, skin split at the knuckles, a frayed oilskin cuff at the wrist",
   "prompt_source": "foe.drowned_hand art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-drowned-hand-flux2-klein-4b-bf16.webp",
   "tile": "img/foe-drowned-hand-flux2-klein-4b-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "flux-2-klein-4b.safetensors",
   "arm_column": "flux2-klein-4b-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": null,
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1301,
   "render_seconds": 0.6,
   "colour": {
    "mean_hue_deg": 24.9,
    "mean_saturation": 0.3054,
    "hue_spread_deg": 38.0,
    "resultant_R": 0.8026,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_drowned_hand__flux2-klein-4b__768__s1301.jpg",
   "id": "foe-drowned-hand-flux2-klein-4b-bf16",
   "archive_id": "foe_drowned_hand__flux2-klein-4b__768__s1301",
   "cell_label": "",
   "at": "2026-08-23T10:32:44+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-klein4b-bf16",
   "law": "cleared",
   "law_detail": "flux.2 [klein] 4B \u2014 Apache License 2.0",
   "sid": "foe-drowned-hand-flux2-klein-4b-bf16"
  },
  {
   "subject": "FOE \u00b7 Drowned-Hand",
   "row": "",
   "column": "flux2-klein-4b-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a swollen grey waterlogged hand and forearm reaching up through black water in a flooded sea-cave, skin split at the knuckles, a frayed oilskin cuff at the wrist",
   "prompt_source": "foe.drowned_hand art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-drowned-hand-flux2-klein-4b-bf16-bare.webp",
   "tile": "img/foe-drowned-hand-flux2-klein-4b-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "flux-2-klein-4b.safetensors",
   "arm_column": "flux2-klein-4b-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": null,
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1301,
   "render_seconds": 0.59,
   "colour": {
    "mean_hue_deg": 117.6,
    "mean_saturation": 0.0903,
    "hue_spread_deg": 74.4,
    "resultant_R": 0.4306,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_drowned_hand__flux2-klein-4b__768__bare__s1301.jpg",
   "id": "foe-drowned-hand-flux2-klein-4b-bf16-bare",
   "archive_id": "foe_drowned_hand__flux2-klein-4b__768__bare__s1301",
   "cell_label": "",
   "at": "2026-08-23T16:44:26+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-klein4b-bf16",
   "law": "cleared",
   "law_detail": "flux.2 [klein] 4B \u2014 Apache License 2.0",
   "sid": "foe-drowned-hand-flux2-klein-4b-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Drowned-Hand",
   "row": "",
   "column": "z-image-base-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a swollen grey waterlogged hand and forearm reaching up through black water in a flooded sea-cave, skin split at the knuckles, a frayed oilskin cuff at the wrist",
   "prompt_source": "foe.drowned_hand art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-drowned-hand-z-image-base-bf16.webp",
   "tile": "img/foe-drowned-hand-z-image-base-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_bf16.safetensors",
   "arm_column": "z-image-base-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 4.0,
   "width": 768,
   "height": 768,
   "seed": 1301,
   "render_seconds": 7.88,
   "colour": {
    "mean_hue_deg": 37.8,
    "mean_saturation": 0.3849,
    "hue_spread_deg": 5.8,
    "resultant_R": 0.9949,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_drowned_hand__z-image-base__768__s1301.jpg",
   "id": "foe-drowned-hand-z-image-base-bf16",
   "archive_id": "foe_drowned_hand__z-image-base__768__s1301",
   "cell_label": "",
   "at": "2026-08-23T10:53:13+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-zimage-base-bf16",
   "law": "cleared",
   "law_detail": "z-image base (undistilled) \u2014 Apache-2.0",
   "sid": "foe-drowned-hand-z-image-base-bf16"
  },
  {
   "subject": "FOE \u00b7 Drowned-Hand",
   "row": "",
   "column": "z-image-base-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a swollen grey waterlogged hand and forearm reaching up through black water in a flooded sea-cave, skin split at the knuckles, a frayed oilskin cuff at the wrist",
   "prompt_source": "foe.drowned_hand art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-drowned-hand-z-image-base-bf16-bare.webp",
   "tile": "img/foe-drowned-hand-z-image-base-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_bf16.safetensors",
   "arm_column": "z-image-base-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 4.0,
   "width": 768,
   "height": 768,
   "seed": 1301,
   "render_seconds": 13.84,
   "colour": {
    "mean_hue_deg": 209.7,
    "mean_saturation": 0.3928,
    "hue_spread_deg": 44.1,
    "resultant_R": 0.7441,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_drowned_hand__z-image-base__768__bare__s1301.jpg",
   "id": "foe-drowned-hand-z-image-base-bf16-bare",
   "archive_id": "foe_drowned_hand__z-image-base__768__bare__s1301",
   "cell_label": "",
   "at": "2026-08-23T17:22:35+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-zimage-base-bf16",
   "law": "cleared",
   "law_detail": "z-image base (undistilled) \u2014 Apache-2.0",
   "sid": "foe-drowned-hand-z-image-base-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Drowned-Hand",
   "row": "",
   "column": "hidream-o1-dev-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a swollen grey waterlogged hand and forearm reaching up through black water in a flooded sea-cave, skin split at the knuckles, a frayed oilskin cuff at the wrist",
   "prompt_source": "foe.drowned_hand art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-drowned-hand-hidream-o1-dev-fp8.webp",
   "tile": "img/foe-drowned-hand-hidream-o1-dev-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "hidream_o1_image_dev_fp8_scaled.safetensors",
   "arm_column": "hidream-o1-dev-fp8",
   "lora": [],
   "sampler": null,
   "scheduler": "normal",
   "steps": 32,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1301,
   "render_seconds": 2.53,
   "colour": {
    "mean_hue_deg": 32.9,
    "mean_saturation": 0.196,
    "hue_spread_deg": 32.2,
    "resultant_R": 0.8541,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_drowned_hand__hidream-o1-dev__768__s1301.jpg",
   "id": "foe-drowned-hand-hidream-o1-dev-fp8",
   "archive_id": "foe_drowned_hand__hidream-o1-dev__768__s1301",
   "cell_label": "",
   "at": "2026-08-23T11:18:33+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-hidream-o1-dev-fp8",
   "law": "cleared",
   "law_detail": "hidream-o1-image-dev \u2014 MIT",
   "sid": "foe-drowned-hand-hidream-o1-dev-fp8"
  },
  {
   "subject": "FOE \u00b7 Drowned-Hand",
   "row": "",
   "column": "hidream-o1-dev-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a swollen grey waterlogged hand and forearm reaching up through black water in a flooded sea-cave, skin split at the knuckles, a frayed oilskin cuff at the wrist",
   "prompt_source": "foe.drowned_hand art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-drowned-hand-hidream-o1-dev-fp8-bare.webp",
   "tile": "img/foe-drowned-hand-hidream-o1-dev-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "hidream_o1_image_dev_fp8_scaled.safetensors",
   "arm_column": "hidream-o1-dev-fp8",
   "lora": [],
   "sampler": null,
   "scheduler": "normal",
   "steps": 32,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1301,
   "render_seconds": 2.41,
   "colour": {
    "mean_hue_deg": 30.1,
    "mean_saturation": 0.194,
    "hue_spread_deg": 14.3,
    "resultant_R": 0.9695,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_drowned_hand__hidream-o1-dev__768__bare__s1301.jpg",
   "id": "foe-drowned-hand-hidream-o1-dev-fp8-bare",
   "archive_id": "foe_drowned_hand__hidream-o1-dev__768__bare__s1301",
   "cell_label": "",
   "at": "2026-08-23T16:45:49+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-hidream-o1-dev-fp8",
   "law": "cleared",
   "law_detail": "hidream-o1-image-dev \u2014 MIT",
   "sid": "foe-drowned-hand-hidream-o1-dev-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 Drowned-Hand",
   "row": "",
   "column": "chroma1-hd-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a swollen grey waterlogged hand and forearm reaching up through black water in a flooded sea-cave, skin split at the knuckles, a frayed oilskin cuff at the wrist",
   "prompt_source": "foe.drowned_hand art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-drowned-hand-chroma1-hd-fp8.webp",
   "tile": "img/foe-drowned-hand-chroma1-hd-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "Chroma1-HD-fp8mixed.safetensors",
   "arm_column": "chroma1-hd-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "beta",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1301,
   "render_seconds": 7.74,
   "colour": {
    "mean_hue_deg": 52.8,
    "mean_saturation": 0.376,
    "hue_spread_deg": 24.2,
    "resultant_R": 0.9144,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_drowned_hand__chroma1-hd__768__s1301.jpg",
   "id": "foe-drowned-hand-chroma1-hd-fp8",
   "archive_id": "foe_drowned_hand__chroma1-hd__768__s1301",
   "cell_label": "",
   "at": "2026-08-23T11:32:19+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-chroma1-hd-fp8",
   "law": "cleared",
   "law_detail": "chroma1-hd (fp8mixed repack) \u2014 Apache-2.0",
   "sid": "foe-drowned-hand-chroma1-hd-fp8"
  },
  {
   "subject": "FOE \u00b7 Drowned-Hand",
   "row": "",
   "column": "chroma1-hd-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a swollen grey waterlogged hand and forearm reaching up through black water in a flooded sea-cave, skin split at the knuckles, a frayed oilskin cuff at the wrist",
   "prompt_source": "foe.drowned_hand art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-drowned-hand-chroma1-hd-fp8-bare.webp",
   "tile": "img/foe-drowned-hand-chroma1-hd-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "Chroma1-HD-fp8mixed.safetensors",
   "arm_column": "chroma1-hd-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "beta",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1301,
   "render_seconds": 13.6,
   "colour": {
    "mean_hue_deg": 170.5,
    "mean_saturation": 0.4967,
    "hue_spread_deg": 32.2,
    "resultant_R": 0.8541,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_drowned_hand__chroma1-hd__768__bare__s1301.jpg",
   "id": "foe-drowned-hand-chroma1-hd-fp8-bare",
   "archive_id": "foe_drowned_hand__chroma1-hd__768__bare__s1301",
   "cell_label": "",
   "at": "2026-08-23T17:29:17+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-chroma1-hd-fp8",
   "law": "cleared",
   "law_detail": "chroma1-hd (fp8mixed repack) \u2014 Apache-2.0",
   "sid": "foe-drowned-hand-chroma1-hd-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 Drowned-Hand",
   "row": "",
   "column": "krea2-turbo-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a swollen grey waterlogged hand and forearm reaching up through black water in a flooded sea-cave, skin split at the knuckles, a frayed oilskin cuff at the wrist",
   "prompt_source": "foe.drowned_hand art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-drowned-hand-krea2-turbo-fp8.webp",
   "tile": "img/foe-drowned-hand-krea2-turbo-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "krea2_turbo_fp8_scaled.safetensors",
   "arm_column": "krea2-turbo-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1301,
   "render_seconds": 2.09,
   "colour": {
    "mean_hue_deg": 27.9,
    "mean_saturation": 0.5247,
    "hue_spread_deg": 7.7,
    "resultant_R": 0.991,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_drowned_hand__krea2-turbo__768__s1301.jpg",
   "id": "foe-drowned-hand-krea2-turbo-fp8",
   "archive_id": "foe_drowned_hand__krea2-turbo__768__s1301",
   "cell_label": "",
   "at": "2026-08-23T10:41:55+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-krea2-turbo-fp8",
   "law": "cleared",
   "law_detail": "krea 2 turbo (fp8_scaled) \u2014 Krea 2 Community License Agreement v.1",
   "sid": "foe-drowned-hand-krea2-turbo-fp8"
  },
  {
   "subject": "FOE \u00b7 Drowned-Hand",
   "row": "",
   "column": "krea2-turbo-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a swollen grey waterlogged hand and forearm reaching up through black water in a flooded sea-cave, skin split at the knuckles, a frayed oilskin cuff at the wrist",
   "prompt_source": "foe.drowned_hand art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-drowned-hand-krea2-turbo-fp8-bare.webp",
   "tile": "img/foe-drowned-hand-krea2-turbo-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "krea2_turbo_fp8_scaled.safetensors",
   "arm_column": "krea2-turbo-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1301,
   "render_seconds": 2.03,
   "colour": {
    "mean_hue_deg": 213.7,
    "mean_saturation": 0.3375,
    "hue_spread_deg": 64.1,
    "resultant_R": 0.535,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_drowned_hand__krea2-turbo__768__bare__s1301.jpg",
   "id": "foe-drowned-hand-krea2-turbo-fp8-bare",
   "archive_id": "foe_drowned_hand__krea2-turbo__768__bare__s1301",
   "cell_label": "",
   "at": "2026-08-23T16:49:43+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-krea2-turbo-fp8",
   "law": "cleared",
   "law_detail": "krea 2 turbo (fp8_scaled) \u2014 Krea 2 Community License Agreement v.1",
   "sid": "foe-drowned-hand-krea2-turbo-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 Drowned-Hand",
   "row": "",
   "column": "mage-flow-turbo-int8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a swollen grey waterlogged hand and forearm reaching up through black water in a flooded sea-cave, skin split at the knuckles, a frayed oilskin cuff at the wrist",
   "prompt_source": "foe.drowned_hand art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-drowned-hand-mage-flow-turbo-int8.webp",
   "tile": "img/foe-drowned-hand-mage-flow-turbo-int8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "mage_flow_turbo_int8_convrot.safetensors",
   "arm_column": "mage-flow-turbo-int8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1301,
   "render_seconds": 0.78,
   "colour": {
    "mean_hue_deg": 40.5,
    "mean_saturation": 0.4477,
    "hue_spread_deg": 14.9,
    "resultant_R": 0.9669,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_drowned_hand__mageflow-turbo__768__s1301.jpg",
   "id": "foe-drowned-hand-mage-flow-turbo-int8",
   "archive_id": "foe_drowned_hand__mageflow-turbo__768__s1301",
   "cell_label": "",
   "at": "2026-08-23T10:38:23+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-mageflow-turbo-int8",
   "law": "cleared",
   "law_detail": "mage-flow 4B turbo (int8) \u2014 MIT License",
   "sid": "foe-drowned-hand-mage-flow-turbo-int8"
  },
  {
   "subject": "FOE \u00b7 Drowned-Hand",
   "row": "",
   "column": "mage-flow-turbo-int8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a swollen grey waterlogged hand and forearm reaching up through black water in a flooded sea-cave, skin split at the knuckles, a frayed oilskin cuff at the wrist",
   "prompt_source": "foe.drowned_hand art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-drowned-hand-mage-flow-turbo-int8-bare.webp",
   "tile": "img/foe-drowned-hand-mage-flow-turbo-int8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "mage_flow_turbo_int8_convrot.safetensors",
   "arm_column": "mage-flow-turbo-int8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1301,
   "render_seconds": 6.59,
   "colour": {
    "mean_hue_deg": 188.5,
    "mean_saturation": 0.2616,
    "hue_spread_deg": 70.4,
    "resultant_R": 0.4699,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_drowned_hand__mageflow-turbo__768__bare__s1301.jpg",
   "id": "foe-drowned-hand-mage-flow-turbo-int8-bare",
   "archive_id": "foe_drowned_hand__mageflow-turbo__768__bare__s1301",
   "cell_label": "",
   "at": "2026-08-23T17:36:37+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-mageflow-turbo-int8",
   "law": "cleared",
   "law_detail": "mage-flow 4B turbo (int8) \u2014 MIT License",
   "sid": "foe-drowned-hand-mage-flow-turbo-int8-bare"
  },
  {
   "subject": "FOE \u00b7 Drowned-Hand",
   "row": "",
   "column": "ernie-image-turbo-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a swollen grey waterlogged hand and forearm reaching up through black water in a flooded sea-cave, skin split at the knuckles, a frayed oilskin cuff at the wrist",
   "prompt_source": "foe.drowned_hand art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-drowned-hand-ernie-image-turbo-bf16.webp",
   "tile": "img/foe-drowned-hand-ernie-image-turbo-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "ernie-image-turbo.safetensors",
   "arm_column": "ernie-image-turbo-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1301,
   "render_seconds": 1.45,
   "colour": {
    "mean_hue_deg": 33.3,
    "mean_saturation": 0.4191,
    "hue_spread_deg": 30.6,
    "resultant_R": 0.8671,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_drowned_hand__ernie-turbo__768__s1301.jpg",
   "id": "foe-drowned-hand-ernie-image-turbo-bf16",
   "archive_id": "foe_drowned_hand__ernie-turbo__768__s1301",
   "cell_label": "",
   "at": "2026-08-23T16:03:07+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-ernie-turbo-bf16",
   "law": "cleared",
   "law_detail": "ernie-image turbo (baidu) \u2014 Apache License 2.0",
   "sid": "foe-drowned-hand-ernie-image-turbo-bf16"
  },
  {
   "subject": "FOE \u00b7 Drowned-Hand",
   "row": "",
   "column": "ernie-image-turbo-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a swollen grey waterlogged hand and forearm reaching up through black water in a flooded sea-cave, skin split at the knuckles, a frayed oilskin cuff at the wrist",
   "prompt_source": "foe.drowned_hand art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-drowned-hand-ernie-image-turbo-bf16-bare.webp",
   "tile": "img/foe-drowned-hand-ernie-image-turbo-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "ernie-image-turbo.safetensors",
   "arm_column": "ernie-image-turbo-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1301,
   "render_seconds": 12.87,
   "colour": {
    "mean_hue_deg": 165.1,
    "mean_saturation": 0.3618,
    "hue_spread_deg": 55.9,
    "resultant_R": 0.6217,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_drowned_hand__ernie-turbo__768__bare__s1301.jpg",
   "id": "foe-drowned-hand-ernie-image-turbo-bf16-bare",
   "archive_id": "foe_drowned_hand__ernie-turbo__768__bare__s1301",
   "cell_label": "",
   "at": "2026-08-23T17:37:23+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-ernie-turbo-bf16",
   "law": "cleared",
   "law_detail": "ernie-image turbo (baidu) \u2014 Apache License 2.0",
   "sid": "foe-drowned-hand-ernie-image-turbo-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Drowned-Hand",
   "row": "",
   "column": "kandinsky5-lite-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a swollen grey waterlogged hand and forearm reaching up through black water in a flooded sea-cave, skin split at the knuckles, a frayed oilskin cuff at the wrist",
   "prompt_source": "foe.drowned_hand art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-drowned-hand-kandinsky5-lite-bf16.webp",
   "tile": "img/foe-drowned-hand-kandinsky5-lite-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "kandinsky5lite_t2i.safetensors",
   "arm_column": "kandinsky5-lite-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1301,
   "render_seconds": 6.24,
   "colour": {
    "mean_hue_deg": 33.1,
    "mean_saturation": 0.4748,
    "hue_spread_deg": 13.9,
    "resultant_R": 0.9711,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_drowned_hand__kandinsky5-lite__768__s1301.jpg",
   "id": "foe-drowned-hand-kandinsky5-lite-bf16",
   "archive_id": "foe_drowned_hand__kandinsky5-lite__768__s1301",
   "cell_label": "",
   "at": "2026-08-23T12:59:47+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/p2-kandinsky5-lite-bf16",
   "law": "cleared",
   "law_detail": "kandinsky 5.0 image lite \u2014 The MIT License (MIT)",
   "sid": "foe-drowned-hand-kandinsky5-lite-bf16"
  },
  {
   "subject": "FOE \u00b7 Drowned-Hand",
   "row": "",
   "column": "kandinsky5-lite-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a swollen grey waterlogged hand and forearm reaching up through black water in a flooded sea-cave, skin split at the knuckles, a frayed oilskin cuff at the wrist",
   "prompt_source": "foe.drowned_hand art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-drowned-hand-kandinsky5-lite-bf16-bare.webp",
   "tile": "img/foe-drowned-hand-kandinsky5-lite-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "kandinsky5lite_t2i.safetensors",
   "arm_column": "kandinsky5-lite-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1301,
   "render_seconds": 15.09,
   "colour": {
    "mean_hue_deg": 159.0,
    "mean_saturation": 0.5238,
    "hue_spread_deg": 31.4,
    "resultant_R": 0.8609,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_drowned_hand__kandinsky5-lite__768__bare__s1301.jpg",
   "id": "foe-drowned-hand-kandinsky5-lite-bf16-bare",
   "archive_id": "foe_drowned_hand__kandinsky5-lite__768__bare__s1301",
   "cell_label": "",
   "at": "2026-08-23T17:46:14+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/p2-kandinsky5-lite-bf16",
   "law": "cleared",
   "law_detail": "kandinsky 5.0 image lite \u2014 The MIT License (MIT)",
   "sid": "foe-drowned-hand-kandinsky5-lite-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Tide-Wraith",
   "row": "",
   "column": "z-image-turbo-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall column of grey-green seawater holding an almost-human shape in a flooded cave, drowned bones showing through the swell of it, kelp and foam trailing from its arms",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1311 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-tide-wraith-z-image-turbo-bf16.webp",
   "tile": "img/foe-tide-wraith-z-image-turbo-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_turbo_bf16.safetensors",
   "arm_column": "z-image-turbo-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1311,
   "render_seconds": 1.23,
   "colour": {
    "mean_hue_deg": 40.6,
    "mean_saturation": 0.4439,
    "hue_spread_deg": 19.3,
    "resultant_R": 0.9451,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tide_wraith__ctrl-z-image-turbo__768__s1311.jpg",
   "id": "foe-tide-wraith-z-image-turbo-bf16",
   "archive_id": "foe_tide_wraith__ctrl-z-image-turbo__768__s1311",
   "cell_label": "",
   "at": "2026-08-23T15:20:18+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/ctrl-z-image-turbo",
   "law": "cleared",
   "law_detail": "z-image turbo (bf16) \u2014 Apache-2.0",
   "sid": "foe-tide-wraith-z-image-turbo-bf16"
  },
  {
   "subject": "FOE \u00b7 Tide-Wraith",
   "row": "",
   "column": "z-image-turbo-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall column of grey-green seawater holding an almost-human shape in a flooded cave, drowned bones showing through the swell of it, kelp and foam trailing from its arms",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1311 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-tide-wraith-z-image-turbo-bf16-bare.webp",
   "tile": "img/foe-tide-wraith-z-image-turbo-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_turbo_bf16.safetensors",
   "arm_column": "z-image-turbo-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1311,
   "render_seconds": 7.46,
   "colour": {
    "mean_hue_deg": 128.1,
    "mean_saturation": 0.2446,
    "hue_spread_deg": 73.4,
    "resultant_R": 0.4397,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tide_wraith__ctrl-z-image-turbo__768__bare__s1311.jpg",
   "id": "foe-tide-wraith-z-image-turbo-bf16-bare",
   "archive_id": "foe_tide_wraith__ctrl-z-image-turbo__768__bare__s1311",
   "cell_label": "",
   "at": "2026-08-23T17:21:03+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/ctrl-z-image-turbo",
   "law": "cleared",
   "law_detail": "z-image turbo (bf16) \u2014 Apache-2.0",
   "sid": "foe-tide-wraith-z-image-turbo-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Tide-Wraith",
   "row": "",
   "column": "flux2-klein-4b-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall column of grey-green seawater holding an almost-human shape in a flooded cave, drowned bones showing through the swell of it, kelp and foam trailing from its arms",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1311 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-tide-wraith-flux2-klein-4b-bf16.webp",
   "tile": "img/foe-tide-wraith-flux2-klein-4b-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "flux-2-klein-4b.safetensors",
   "arm_column": "flux2-klein-4b-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": null,
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1311,
   "render_seconds": 0.62,
   "colour": {
    "mean_hue_deg": 29.2,
    "mean_saturation": 0.4154,
    "hue_spread_deg": 13.8,
    "resultant_R": 0.9714,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tide_wraith__flux2-klein-4b__768__s1311.jpg",
   "id": "foe-tide-wraith-flux2-klein-4b-bf16",
   "archive_id": "foe_tide_wraith__flux2-klein-4b__768__s1311",
   "cell_label": "",
   "at": "2026-08-23T15:22:21+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-klein4b-bf16",
   "law": "cleared",
   "law_detail": "flux.2 [klein] 4B \u2014 Apache License 2.0",
   "sid": "foe-tide-wraith-flux2-klein-4b-bf16"
  },
  {
   "subject": "FOE \u00b7 Tide-Wraith",
   "row": "",
   "column": "flux2-klein-4b-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall column of grey-green seawater holding an almost-human shape in a flooded cave, drowned bones showing through the swell of it, kelp and foam trailing from its arms",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1311 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-tide-wraith-flux2-klein-4b-bf16-bare.webp",
   "tile": "img/foe-tide-wraith-flux2-klein-4b-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "flux-2-klein-4b.safetensors",
   "arm_column": "flux2-klein-4b-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": null,
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1311,
   "render_seconds": 5.02,
   "colour": {
    "mean_hue_deg": 192.4,
    "mean_saturation": 0.2436,
    "hue_spread_deg": 33.3,
    "resultant_R": 0.8449,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tide_wraith__flux2-klein-4b__768__bare__s1311.jpg",
   "id": "foe-tide-wraith-flux2-klein-4b-bf16-bare",
   "archive_id": "foe_tide_wraith__flux2-klein-4b__768__bare__s1311",
   "cell_label": "",
   "at": "2026-08-23T17:21:53+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-klein4b-bf16",
   "law": "cleared",
   "law_detail": "flux.2 [klein] 4B \u2014 Apache License 2.0",
   "sid": "foe-tide-wraith-flux2-klein-4b-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Tide-Wraith",
   "row": "",
   "column": "z-image-base-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall column of grey-green seawater holding an almost-human shape in a flooded cave, drowned bones showing through the swell of it, kelp and foam trailing from its arms",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1311 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-tide-wraith-z-image-base-bf16.webp",
   "tile": "img/foe-tide-wraith-z-image-base-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_bf16.safetensors",
   "arm_column": "z-image-base-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 4.0,
   "width": 768,
   "height": 768,
   "seed": 1311,
   "render_seconds": 7.87,
   "colour": {
    "mean_hue_deg": 40.8,
    "mean_saturation": 0.4274,
    "hue_spread_deg": 10.8,
    "resultant_R": 0.9823,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tide_wraith__z-image-base__768__s1311.jpg",
   "id": "foe-tide-wraith-z-image-base-bf16",
   "archive_id": "foe_tide_wraith__z-image-base__768__s1311",
   "cell_label": "",
   "at": "2026-08-23T15:25:33+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-zimage-base-bf16",
   "law": "cleared",
   "law_detail": "z-image base (undistilled) \u2014 Apache-2.0",
   "sid": "foe-tide-wraith-z-image-base-bf16"
  },
  {
   "subject": "FOE \u00b7 Tide-Wraith",
   "row": "",
   "column": "z-image-base-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall column of grey-green seawater holding an almost-human shape in a flooded cave, drowned bones showing through the swell of it, kelp and foam trailing from its arms",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1311 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-tide-wraith-z-image-base-bf16-bare.webp",
   "tile": "img/foe-tide-wraith-z-image-base-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_bf16.safetensors",
   "arm_column": "z-image-base-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 4.0,
   "width": 768,
   "height": 768,
   "seed": 1311,
   "render_seconds": 7.66,
   "colour": {
    "mean_hue_deg": 93.7,
    "mean_saturation": 0.2,
    "hue_spread_deg": 28.1,
    "resultant_R": 0.8866,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tide_wraith__z-image-base__768__bare__s1311.jpg",
   "id": "foe-tide-wraith-z-image-base-bf16-bare",
   "archive_id": "foe_tide_wraith__z-image-base__768__bare__s1311",
   "cell_label": "",
   "at": "2026-08-23T17:22:58+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-zimage-base-bf16",
   "law": "cleared",
   "law_detail": "z-image base (undistilled) \u2014 Apache-2.0",
   "sid": "foe-tide-wraith-z-image-base-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Tide-Wraith",
   "row": "",
   "column": "hidream-o1-dev-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall column of grey-green seawater holding an almost-human shape in a flooded cave, drowned bones showing through the swell of it, kelp and foam trailing from its arms",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1311 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-tide-wraith-hidream-o1-dev-fp8.webp",
   "tile": "img/foe-tide-wraith-hidream-o1-dev-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "hidream_o1_image_dev_fp8_scaled.safetensors",
   "arm_column": "hidream-o1-dev-fp8",
   "lora": [],
   "sampler": null,
   "scheduler": "normal",
   "steps": 32,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1311,
   "render_seconds": 2.48,
   "colour": {
    "mean_hue_deg": 47.3,
    "mean_saturation": 0.1799,
    "hue_spread_deg": 27.8,
    "resultant_R": 0.889,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tide_wraith__hidream-o1-dev__768__s1311.jpg",
   "id": "foe-tide-wraith-hidream-o1-dev-fp8",
   "archive_id": "foe_tide_wraith__hidream-o1-dev__768__s1311",
   "cell_label": "",
   "at": "2026-08-23T15:37:59+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-hidream-o1-dev-fp8",
   "law": "cleared",
   "law_detail": "hidream-o1-image-dev \u2014 MIT",
   "sid": "foe-tide-wraith-hidream-o1-dev-fp8"
  },
  {
   "subject": "FOE \u00b7 Tide-Wraith",
   "row": "",
   "column": "hidream-o1-dev-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall column of grey-green seawater holding an almost-human shape in a flooded cave, drowned bones showing through the swell of it, kelp and foam trailing from its arms",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1311 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-tide-wraith-hidream-o1-dev-fp8-bare.webp",
   "tile": "img/foe-tide-wraith-hidream-o1-dev-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "hidream_o1_image_dev_fp8_scaled.safetensors",
   "arm_column": "hidream-o1-dev-fp8",
   "lora": [],
   "sampler": null,
   "scheduler": "normal",
   "steps": 32,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1311,
   "render_seconds": 5.98,
   "colour": {
    "mean_hue_deg": 118.7,
    "mean_saturation": 0.0985,
    "hue_spread_deg": 60.5,
    "resultant_R": 0.5729,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tide_wraith__hidream-o1-dev__768__bare__s1311.jpg",
   "id": "foe-tide-wraith-hidream-o1-dev-fp8-bare",
   "archive_id": "foe_tide_wraith__hidream-o1-dev__768__bare__s1311",
   "cell_label": "",
   "at": "2026-08-23T17:27:26+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-hidream-o1-dev-fp8",
   "law": "cleared",
   "law_detail": "hidream-o1-image-dev \u2014 MIT",
   "sid": "foe-tide-wraith-hidream-o1-dev-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 Tide-Wraith",
   "row": "",
   "column": "chroma1-hd-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall column of grey-green seawater holding an almost-human shape in a flooded cave, drowned bones showing through the swell of it, kelp and foam trailing from its arms",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1311 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-tide-wraith-chroma1-hd-fp8.webp",
   "tile": "img/foe-tide-wraith-chroma1-hd-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "Chroma1-HD-fp8mixed.safetensors",
   "arm_column": "chroma1-hd-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "beta",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1311,
   "render_seconds": 7.41,
   "colour": {
    "mean_hue_deg": 50.1,
    "mean_saturation": 0.4984,
    "hue_spread_deg": 21.7,
    "resultant_R": 0.9307,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tide_wraith__chroma1-hd__768__s1311.jpg",
   "id": "foe-tide-wraith-chroma1-hd-fp8",
   "archive_id": "foe_tide_wraith__chroma1-hd__768__s1311",
   "cell_label": "",
   "at": "2026-08-23T15:44:32+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-chroma1-hd-fp8",
   "law": "cleared",
   "law_detail": "chroma1-hd (fp8mixed repack) \u2014 Apache-2.0",
   "sid": "foe-tide-wraith-chroma1-hd-fp8"
  },
  {
   "subject": "FOE \u00b7 Tide-Wraith",
   "row": "",
   "column": "chroma1-hd-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall column of grey-green seawater holding an almost-human shape in a flooded cave, drowned bones showing through the swell of it, kelp and foam trailing from its arms",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1311 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-tide-wraith-chroma1-hd-fp8-bare.webp",
   "tile": "img/foe-tide-wraith-chroma1-hd-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "Chroma1-HD-fp8mixed.safetensors",
   "arm_column": "chroma1-hd-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "beta",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1311,
   "render_seconds": 7.87,
   "colour": {
    "mean_hue_deg": 165.0,
    "mean_saturation": 0.4064,
    "hue_spread_deg": 14.2,
    "resultant_R": 0.9696,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tide_wraith__chroma1-hd__768__bare__s1311.jpg",
   "id": "foe-tide-wraith-chroma1-hd-fp8-bare",
   "archive_id": "foe_tide_wraith__chroma1-hd__768__bare__s1311",
   "cell_label": "",
   "at": "2026-08-23T17:29:41+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-chroma1-hd-fp8",
   "law": "cleared",
   "law_detail": "chroma1-hd (fp8mixed repack) \u2014 Apache-2.0",
   "sid": "foe-tide-wraith-chroma1-hd-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 Tide-Wraith",
   "row": "",
   "column": "krea2-turbo-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall column of grey-green seawater holding an almost-human shape in a flooded cave, drowned bones showing through the swell of it, kelp and foam trailing from its arms",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1311 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-tide-wraith-krea2-turbo-fp8.webp",
   "tile": "img/foe-tide-wraith-krea2-turbo-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "krea2_turbo_fp8_scaled.safetensors",
   "arm_column": "krea2-turbo-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1311,
   "render_seconds": 2.08,
   "colour": {
    "mean_hue_deg": 35.5,
    "mean_saturation": 0.3936,
    "hue_spread_deg": 9.8,
    "resultant_R": 0.9854,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tide_wraith__krea2-turbo__768__s1311.jpg",
   "id": "foe-tide-wraith-krea2-turbo-fp8",
   "archive_id": "foe_tide_wraith__krea2-turbo__768__s1311",
   "cell_label": "",
   "at": "2026-08-23T15:58:09+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-krea2-turbo-fp8",
   "law": "cleared",
   "law_detail": "krea 2 turbo (fp8_scaled) \u2014 Krea 2 Community License Agreement v.1",
   "sid": "foe-tide-wraith-krea2-turbo-fp8"
  },
  {
   "subject": "FOE \u00b7 Tide-Wraith",
   "row": "",
   "column": "krea2-turbo-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall column of grey-green seawater holding an almost-human shape in a flooded cave, drowned bones showing through the swell of it, kelp and foam trailing from its arms",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1311 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-tide-wraith-krea2-turbo-fp8-bare.webp",
   "tile": "img/foe-tide-wraith-krea2-turbo-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "krea2_turbo_fp8_scaled.safetensors",
   "arm_column": "krea2-turbo-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1311,
   "render_seconds": 9.89,
   "colour": {
    "mean_hue_deg": 122.5,
    "mean_saturation": 0.1725,
    "hue_spread_deg": 64.3,
    "resultant_R": 0.5331,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tide_wraith__krea2-turbo__768__bare__s1311.jpg",
   "id": "foe-tide-wraith-krea2-turbo-fp8-bare",
   "archive_id": "foe_tide_wraith__krea2-turbo__768__bare__s1311",
   "cell_label": "",
   "at": "2026-08-23T17:35:12+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-krea2-turbo-fp8",
   "law": "cleared",
   "law_detail": "krea 2 turbo (fp8_scaled) \u2014 Krea 2 Community License Agreement v.1",
   "sid": "foe-tide-wraith-krea2-turbo-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 Tide-Wraith",
   "row": "",
   "column": "mage-flow-turbo-int8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall column of grey-green seawater holding an almost-human shape in a flooded cave, drowned bones showing through the swell of it, kelp and foam trailing from its arms",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1311 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-tide-wraith-mage-flow-turbo-int8.webp",
   "tile": "img/foe-tide-wraith-mage-flow-turbo-int8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "mage_flow_turbo_int8_convrot.safetensors",
   "arm_column": "mage-flow-turbo-int8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1311,
   "render_seconds": 0.78,
   "colour": {
    "mean_hue_deg": 38.5,
    "mean_saturation": 0.4938,
    "hue_spread_deg": 12.2,
    "resultant_R": 0.9777,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tide_wraith__mageflow-turbo__768__s1311.jpg",
   "id": "foe-tide-wraith-mage-flow-turbo-int8",
   "archive_id": "foe_tide_wraith__mageflow-turbo__768__s1311",
   "cell_label": "",
   "at": "2026-08-23T16:01:31+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-mageflow-turbo-int8",
   "law": "cleared",
   "law_detail": "mage-flow 4B turbo (int8) \u2014 MIT License",
   "sid": "foe-tide-wraith-mage-flow-turbo-int8"
  },
  {
   "subject": "FOE \u00b7 Tide-Wraith",
   "row": "",
   "column": "mage-flow-turbo-int8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall column of grey-green seawater holding an almost-human shape in a flooded cave, drowned bones showing through the swell of it, kelp and foam trailing from its arms",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1311 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-tide-wraith-mage-flow-turbo-int8-bare.webp",
   "tile": "img/foe-tide-wraith-mage-flow-turbo-int8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "mage_flow_turbo_int8_convrot.safetensors",
   "arm_column": "mage-flow-turbo-int8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1311,
   "render_seconds": 0.86,
   "colour": {
    "mean_hue_deg": 151.2,
    "mean_saturation": 0.2986,
    "hue_spread_deg": 67.7,
    "resultant_R": 0.4976,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tide_wraith__mageflow-turbo__768__bare__s1311.jpg",
   "id": "foe-tide-wraith-mage-flow-turbo-int8-bare",
   "archive_id": "foe_tide_wraith__mageflow-turbo__768__bare__s1311",
   "cell_label": "",
   "at": "2026-08-23T17:36:40+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-mageflow-turbo-int8",
   "law": "cleared",
   "law_detail": "mage-flow 4B turbo (int8) \u2014 MIT License",
   "sid": "foe-tide-wraith-mage-flow-turbo-int8-bare"
  },
  {
   "subject": "FOE \u00b7 Tide-Wraith",
   "row": "",
   "column": "ernie-image-turbo-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall column of grey-green seawater holding an almost-human shape in a flooded cave, drowned bones showing through the swell of it, kelp and foam trailing from its arms",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1311 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-tide-wraith-ernie-image-turbo-bf16.webp",
   "tile": "img/foe-tide-wraith-ernie-image-turbo-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "ernie-image-turbo.safetensors",
   "arm_column": "ernie-image-turbo-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1311,
   "render_seconds": 1.45,
   "colour": {
    "mean_hue_deg": 36.9,
    "mean_saturation": 0.4579,
    "hue_spread_deg": 15.2,
    "resultant_R": 0.9655,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tide_wraith__ernie-turbo__768__s1311.jpg",
   "id": "foe-tide-wraith-ernie-image-turbo-bf16",
   "archive_id": "foe_tide_wraith__ernie-turbo__768__s1311",
   "cell_label": "",
   "at": "2026-08-23T16:03:11+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-ernie-turbo-bf16",
   "law": "cleared",
   "law_detail": "ernie-image turbo (baidu) \u2014 Apache License 2.0",
   "sid": "foe-tide-wraith-ernie-image-turbo-bf16"
  },
  {
   "subject": "FOE \u00b7 Tide-Wraith",
   "row": "",
   "column": "ernie-image-turbo-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall column of grey-green seawater holding an almost-human shape in a flooded cave, drowned bones showing through the swell of it, kelp and foam trailing from its arms",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1311 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-tide-wraith-ernie-image-turbo-bf16-bare.webp",
   "tile": "img/foe-tide-wraith-ernie-image-turbo-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "ernie-image-turbo.safetensors",
   "arm_column": "ernie-image-turbo-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1311,
   "render_seconds": 1.43,
   "colour": {
    "mean_hue_deg": 152.6,
    "mean_saturation": 0.3102,
    "hue_spread_deg": 42.9,
    "resultant_R": 0.7553,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tide_wraith__ernie-turbo__768__bare__s1311.jpg",
   "id": "foe-tide-wraith-ernie-image-turbo-bf16-bare",
   "archive_id": "foe_tide_wraith__ernie-turbo__768__bare__s1311",
   "cell_label": "",
   "at": "2026-08-23T17:37:27+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-ernie-turbo-bf16",
   "law": "cleared",
   "law_detail": "ernie-image turbo (baidu) \u2014 Apache License 2.0",
   "sid": "foe-tide-wraith-ernie-image-turbo-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Tide-Wraith",
   "row": "",
   "column": "kandinsky5-lite-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall column of grey-green seawater holding an almost-human shape in a flooded cave, drowned bones showing through the swell of it, kelp and foam trailing from its arms",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1311 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-tide-wraith-kandinsky5-lite-bf16.webp",
   "tile": "img/foe-tide-wraith-kandinsky5-lite-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "kandinsky5lite_t2i.safetensors",
   "arm_column": "kandinsky5-lite-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1311,
   "render_seconds": 6.19,
   "colour": {
    "mean_hue_deg": 44.6,
    "mean_saturation": 0.3329,
    "hue_spread_deg": 10.5,
    "resultant_R": 0.9835,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tide_wraith__kandinsky5-lite__768__s1311.jpg",
   "id": "foe-tide-wraith-kandinsky5-lite-bf16",
   "archive_id": "foe_tide_wraith__kandinsky5-lite__768__s1311",
   "cell_label": "",
   "at": "2026-08-23T16:32:52+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/p2-kandinsky5-lite-bf16",
   "law": "cleared",
   "law_detail": "kandinsky 5.0 image lite \u2014 The MIT License (MIT)",
   "sid": "foe-tide-wraith-kandinsky5-lite-bf16"
  },
  {
   "subject": "FOE \u00b7 Tide-Wraith",
   "row": "",
   "column": "kandinsky5-lite-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall column of grey-green seawater holding an almost-human shape in a flooded cave, drowned bones showing through the swell of it, kelp and foam trailing from its arms",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1311 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-tide-wraith-kandinsky5-lite-bf16-bare.webp",
   "tile": "img/foe-tide-wraith-kandinsky5-lite-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "kandinsky5lite_t2i.safetensors",
   "arm_column": "kandinsky5-lite-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1311,
   "render_seconds": 6.12,
   "colour": {
    "mean_hue_deg": 142.1,
    "mean_saturation": 0.1647,
    "hue_spread_deg": 61.7,
    "resultant_R": 0.5599,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tide_wraith__kandinsky5-lite__768__bare__s1311.jpg",
   "id": "foe-tide-wraith-kandinsky5-lite-bf16-bare",
   "archive_id": "foe_tide_wraith__kandinsky5-lite__768__bare__s1311",
   "cell_label": "",
   "at": "2026-08-23T17:46:33+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/p2-kandinsky5-lite-bf16",
   "law": "cleared",
   "law_detail": "kandinsky 5.0 image lite \u2014 The MIT License (MIT)",
   "sid": "foe-tide-wraith-kandinsky5-lite-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Fen-Light",
   "row": "",
   "column": "z-image-turbo-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a pale cold flame drifting over brown standing water between reeds in low mist, its reflection on the water a hand's-breadth out of place",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1312 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-fen-light-z-image-turbo-bf16.webp",
   "tile": "img/foe-fen-light-z-image-turbo-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_turbo_bf16.safetensors",
   "arm_column": "z-image-turbo-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1312,
   "render_seconds": 1.22,
   "colour": {
    "mean_hue_deg": 29.0,
    "mean_saturation": 0.5247,
    "hue_spread_deg": 3.0,
    "resultant_R": 0.9987,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_fen_light__ctrl-z-image-turbo__768__s1312.jpg",
   "id": "foe-fen-light-z-image-turbo-bf16",
   "archive_id": "foe_fen_light__ctrl-z-image-turbo__768__s1312",
   "cell_label": "",
   "at": "2026-08-23T15:20:22+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/ctrl-z-image-turbo",
   "law": "cleared",
   "law_detail": "z-image turbo (bf16) \u2014 Apache-2.0",
   "sid": "foe-fen-light-z-image-turbo-bf16"
  },
  {
   "subject": "FOE \u00b7 Fen-Light",
   "row": "",
   "column": "z-image-turbo-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a pale cold flame drifting over brown standing water between reeds in low mist, its reflection on the water a hand's-breadth out of place",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1312 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-fen-light-z-image-turbo-bf16-bare.webp",
   "tile": "img/foe-fen-light-z-image-turbo-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_turbo_bf16.safetensors",
   "arm_column": "z-image-turbo-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1312,
   "render_seconds": 1.21,
   "colour": {
    "mean_hue_deg": 27.1,
    "mean_saturation": 0.2441,
    "hue_spread_deg": 41.8,
    "resultant_R": 0.7668,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_fen_light__ctrl-z-image-turbo__768__bare__s1312.jpg",
   "id": "foe-fen-light-z-image-turbo-bf16-bare",
   "archive_id": "foe_fen_light__ctrl-z-image-turbo__768__bare__s1312",
   "cell_label": "",
   "at": "2026-08-23T17:21:07+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/ctrl-z-image-turbo",
   "law": "cleared",
   "law_detail": "z-image turbo (bf16) \u2014 Apache-2.0",
   "sid": "foe-fen-light-z-image-turbo-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Fen-Light",
   "row": "",
   "column": "flux2-klein-4b-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a pale cold flame drifting over brown standing water between reeds in low mist, its reflection on the water a hand's-breadth out of place",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1312 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-fen-light-flux2-klein-4b-bf16.webp",
   "tile": "img/foe-fen-light-flux2-klein-4b-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "flux-2-klein-4b.safetensors",
   "arm_column": "flux2-klein-4b-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": null,
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1312,
   "render_seconds": 0.61,
   "colour": {
    "mean_hue_deg": 30.2,
    "mean_saturation": 0.4912,
    "hue_spread_deg": 7.5,
    "resultant_R": 0.9915,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_fen_light__flux2-klein-4b__768__s1312.jpg",
   "id": "foe-fen-light-flux2-klein-4b-bf16",
   "archive_id": "foe_fen_light__flux2-klein-4b__768__s1312",
   "cell_label": "",
   "at": "2026-08-23T15:22:23+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-klein4b-bf16",
   "law": "cleared",
   "law_detail": "flux.2 [klein] 4B \u2014 Apache License 2.0",
   "sid": "foe-fen-light-flux2-klein-4b-bf16"
  },
  {
   "subject": "FOE \u00b7 Fen-Light",
   "row": "",
   "column": "flux2-klein-4b-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a pale cold flame drifting over brown standing water between reeds in low mist, its reflection on the water a hand's-breadth out of place",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1312 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-fen-light-flux2-klein-4b-bf16-bare.webp",
   "tile": "img/foe-fen-light-flux2-klein-4b-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "flux-2-klein-4b.safetensors",
   "arm_column": "flux2-klein-4b-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": null,
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1312,
   "render_seconds": 0.61,
   "colour": {
    "mean_hue_deg": 28.1,
    "mean_saturation": 0.2074,
    "hue_spread_deg": 99.4,
    "resultant_R": 0.222,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_fen_light__flux2-klein-4b__768__bare__s1312.jpg",
   "id": "foe-fen-light-flux2-klein-4b-bf16-bare",
   "archive_id": "foe_fen_light__flux2-klein-4b__768__bare__s1312",
   "cell_label": "",
   "at": "2026-08-23T17:21:55+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-klein4b-bf16",
   "law": "cleared",
   "law_detail": "flux.2 [klein] 4B \u2014 Apache License 2.0",
   "sid": "foe-fen-light-flux2-klein-4b-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Fen-Light",
   "row": "",
   "column": "z-image-base-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a pale cold flame drifting over brown standing water between reeds in low mist, its reflection on the water a hand's-breadth out of place",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1312 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-fen-light-z-image-base-bf16.webp",
   "tile": "img/foe-fen-light-z-image-base-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_bf16.safetensors",
   "arm_column": "z-image-base-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 4.0,
   "width": 768,
   "height": 768,
   "seed": 1312,
   "render_seconds": 7.92,
   "colour": {
    "mean_hue_deg": 31.8,
    "mean_saturation": 0.5025,
    "hue_spread_deg": 3.5,
    "resultant_R": 0.9982,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_fen_light__z-image-base__768__s1312.jpg",
   "id": "foe-fen-light-z-image-base-bf16",
   "archive_id": "foe_fen_light__z-image-base__768__s1312",
   "cell_label": "",
   "at": "2026-08-23T15:25:56+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-zimage-base-bf16",
   "law": "cleared",
   "law_detail": "z-image base (undistilled) \u2014 Apache-2.0",
   "sid": "foe-fen-light-z-image-base-bf16"
  },
  {
   "subject": "FOE \u00b7 Fen-Light",
   "row": "",
   "column": "z-image-base-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a pale cold flame drifting over brown standing water between reeds in low mist, its reflection on the water a hand's-breadth out of place",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1312 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-fen-light-z-image-base-bf16-bare.webp",
   "tile": "img/foe-fen-light-z-image-base-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_bf16.safetensors",
   "arm_column": "z-image-base-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 4.0,
   "width": 768,
   "height": 768,
   "seed": 1312,
   "render_seconds": 7.76,
   "colour": {
    "mean_hue_deg": 35.4,
    "mean_saturation": 0.3489,
    "hue_spread_deg": 35.0,
    "resultant_R": 0.8297,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_fen_light__z-image-base__768__bare__s1312.jpg",
   "id": "foe-fen-light-z-image-base-bf16-bare",
   "archive_id": "foe_fen_light__z-image-base__768__bare__s1312",
   "cell_label": "",
   "at": "2026-08-23T17:23:21+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-zimage-base-bf16",
   "law": "cleared",
   "law_detail": "z-image base (undistilled) \u2014 Apache-2.0",
   "sid": "foe-fen-light-z-image-base-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Fen-Light",
   "row": "",
   "column": "hidream-o1-dev-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a pale cold flame drifting over brown standing water between reeds in low mist, its reflection on the water a hand's-breadth out of place",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1312 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-fen-light-hidream-o1-dev-fp8.webp",
   "tile": "img/foe-fen-light-hidream-o1-dev-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "hidream_o1_image_dev_fp8_scaled.safetensors",
   "arm_column": "hidream-o1-dev-fp8",
   "lora": [],
   "sampler": null,
   "scheduler": "normal",
   "steps": 32,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1312,
   "render_seconds": 2.45,
   "colour": {
    "mean_hue_deg": 22.2,
    "mean_saturation": 0.3555,
    "hue_spread_deg": 5.9,
    "resultant_R": 0.9948,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_fen_light__hidream-o1-dev__768__s1312.jpg",
   "id": "foe-fen-light-hidream-o1-dev-fp8",
   "archive_id": "foe_fen_light__hidream-o1-dev__768__s1312",
   "cell_label": "",
   "at": "2026-08-23T15:38:07+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-hidream-o1-dev-fp8",
   "law": "cleared",
   "law_detail": "hidream-o1-image-dev \u2014 MIT",
   "sid": "foe-fen-light-hidream-o1-dev-fp8"
  },
  {
   "subject": "FOE \u00b7 Fen-Light",
   "row": "",
   "column": "hidream-o1-dev-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a pale cold flame drifting over brown standing water between reeds in low mist, its reflection on the water a hand's-breadth out of place",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1312 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-fen-light-hidream-o1-dev-fp8-bare.webp",
   "tile": "img/foe-fen-light-hidream-o1-dev-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "hidream_o1_image_dev_fp8_scaled.safetensors",
   "arm_column": "hidream-o1-dev-fp8",
   "lora": [],
   "sampler": null,
   "scheduler": "normal",
   "steps": 32,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1312,
   "render_seconds": 2.56,
   "colour": {
    "mean_hue_deg": 269.1,
    "mean_saturation": 0.1467,
    "hue_spread_deg": 103.7,
    "resultant_R": 0.1945,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_fen_light__hidream-o1-dev__768__bare__s1312.jpg",
   "id": "foe-fen-light-hidream-o1-dev-fp8-bare",
   "archive_id": "foe_fen_light__hidream-o1-dev__768__bare__s1312",
   "cell_label": "",
   "at": "2026-08-23T17:27:40+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-hidream-o1-dev-fp8",
   "law": "cleared",
   "law_detail": "hidream-o1-image-dev \u2014 MIT",
   "sid": "foe-fen-light-hidream-o1-dev-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 Fen-Light",
   "row": "",
   "column": "chroma1-hd-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a pale cold flame drifting over brown standing water between reeds in low mist, its reflection on the water a hand's-breadth out of place",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1312 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-fen-light-chroma1-hd-fp8.webp",
   "tile": "img/foe-fen-light-chroma1-hd-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "Chroma1-HD-fp8mixed.safetensors",
   "arm_column": "chroma1-hd-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "beta",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1312,
   "render_seconds": 7.47,
   "colour": {
    "mean_hue_deg": 33.6,
    "mean_saturation": 0.6737,
    "hue_spread_deg": 5.2,
    "resultant_R": 0.996,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_fen_light__chroma1-hd__768__s1312.jpg",
   "id": "foe-fen-light-chroma1-hd-fp8",
   "archive_id": "foe_fen_light__chroma1-hd__768__s1312",
   "cell_label": "",
   "at": "2026-08-23T15:44:55+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-chroma1-hd-fp8",
   "law": "cleared",
   "law_detail": "chroma1-hd (fp8mixed repack) \u2014 Apache-2.0",
   "sid": "foe-fen-light-chroma1-hd-fp8"
  },
  {
   "subject": "FOE \u00b7 Fen-Light",
   "row": "",
   "column": "chroma1-hd-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a pale cold flame drifting over brown standing water between reeds in low mist, its reflection on the water a hand's-breadth out of place",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1312 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-fen-light-chroma1-hd-fp8-bare.webp",
   "tile": "img/foe-fen-light-chroma1-hd-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "Chroma1-HD-fp8mixed.safetensors",
   "arm_column": "chroma1-hd-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "beta",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1312,
   "render_seconds": 7.99,
   "colour": {
    "mean_hue_deg": 48.1,
    "mean_saturation": 0.3355,
    "hue_spread_deg": 41.5,
    "resultant_R": 0.7689,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_fen_light__chroma1-hd__768__bare__s1312.jpg",
   "id": "foe-fen-light-chroma1-hd-fp8-bare",
   "archive_id": "foe_fen_light__chroma1-hd__768__bare__s1312",
   "cell_label": "",
   "at": "2026-08-23T17:30:06+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-chroma1-hd-fp8",
   "law": "cleared",
   "law_detail": "chroma1-hd (fp8mixed repack) \u2014 Apache-2.0",
   "sid": "foe-fen-light-chroma1-hd-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 Fen-Light",
   "row": "",
   "column": "krea2-turbo-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a pale cold flame drifting over brown standing water between reeds in low mist, its reflection on the water a hand's-breadth out of place",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1312 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-fen-light-krea2-turbo-fp8.webp",
   "tile": "img/foe-fen-light-krea2-turbo-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "krea2_turbo_fp8_scaled.safetensors",
   "arm_column": "krea2-turbo-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1312,
   "render_seconds": 2.08,
   "colour": {
    "mean_hue_deg": 25.2,
    "mean_saturation": 0.5848,
    "hue_spread_deg": 3.7,
    "resultant_R": 0.9979,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_fen_light__krea2-turbo__768__s1312.jpg",
   "id": "foe-fen-light-krea2-turbo-fp8",
   "archive_id": "foe_fen_light__krea2-turbo__768__s1312",
   "cell_label": "",
   "at": "2026-08-23T15:58:16+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-krea2-turbo-fp8",
   "law": "cleared",
   "law_detail": "krea 2 turbo (fp8_scaled) \u2014 Krea 2 Community License Agreement v.1",
   "sid": "foe-fen-light-krea2-turbo-fp8"
  },
  {
   "subject": "FOE \u00b7 Fen-Light",
   "row": "",
   "column": "krea2-turbo-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a pale cold flame drifting over brown standing water between reeds in low mist, its reflection on the water a hand's-breadth out of place",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1312 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-fen-light-krea2-turbo-fp8-bare.webp",
   "tile": "img/foe-fen-light-krea2-turbo-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "krea2_turbo_fp8_scaled.safetensors",
   "arm_column": "krea2-turbo-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1312,
   "render_seconds": 2.04,
   "colour": {
    "mean_hue_deg": 21.5,
    "mean_saturation": 0.3551,
    "hue_spread_deg": 27.3,
    "resultant_R": 0.8929,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_fen_light__krea2-turbo__768__bare__s1312.jpg",
   "id": "foe-fen-light-krea2-turbo-fp8-bare",
   "archive_id": "foe_fen_light__krea2-turbo__768__bare__s1312",
   "cell_label": "",
   "at": "2026-08-23T17:35:18+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-krea2-turbo-fp8",
   "law": "cleared",
   "law_detail": "krea 2 turbo (fp8_scaled) \u2014 Krea 2 Community License Agreement v.1",
   "sid": "foe-fen-light-krea2-turbo-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 Fen-Light",
   "row": "",
   "column": "mage-flow-turbo-int8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a pale cold flame drifting over brown standing water between reeds in low mist, its reflection on the water a hand's-breadth out of place",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1312 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-fen-light-mage-flow-turbo-int8.webp",
   "tile": "img/foe-fen-light-mage-flow-turbo-int8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "mage_flow_turbo_int8_convrot.safetensors",
   "arm_column": "mage-flow-turbo-int8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1312,
   "render_seconds": 0.78,
   "colour": {
    "mean_hue_deg": 27.6,
    "mean_saturation": 0.551,
    "hue_spread_deg": 4.0,
    "resultant_R": 0.9975,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_fen_light__mageflow-turbo__768__s1312.jpg",
   "id": "foe-fen-light-mage-flow-turbo-int8",
   "archive_id": "foe_fen_light__mageflow-turbo__768__s1312",
   "cell_label": "",
   "at": "2026-08-23T16:01:34+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-mageflow-turbo-int8",
   "law": "cleared",
   "law_detail": "mage-flow 4B turbo (int8) \u2014 MIT License",
   "sid": "foe-fen-light-mage-flow-turbo-int8"
  },
  {
   "subject": "FOE \u00b7 Fen-Light",
   "row": "",
   "column": "mage-flow-turbo-int8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a pale cold flame drifting over brown standing water between reeds in low mist, its reflection on the water a hand's-breadth out of place",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1312 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-fen-light-mage-flow-turbo-int8-bare.webp",
   "tile": "img/foe-fen-light-mage-flow-turbo-int8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "mage_flow_turbo_int8_convrot.safetensors",
   "arm_column": "mage-flow-turbo-int8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1312,
   "render_seconds": 0.87,
   "colour": {
    "mean_hue_deg": 22.8,
    "mean_saturation": 0.2165,
    "hue_spread_deg": 42.6,
    "resultant_R": 0.7581,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_fen_light__mageflow-turbo__768__bare__s1312.jpg",
   "id": "foe-fen-light-mage-flow-turbo-int8-bare",
   "archive_id": "foe_fen_light__mageflow-turbo__768__bare__s1312",
   "cell_label": "",
   "at": "2026-08-23T17:36:42+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-mageflow-turbo-int8",
   "law": "cleared",
   "law_detail": "mage-flow 4B turbo (int8) \u2014 MIT License",
   "sid": "foe-fen-light-mage-flow-turbo-int8-bare"
  },
  {
   "subject": "FOE \u00b7 Fen-Light",
   "row": "",
   "column": "ernie-image-turbo-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a pale cold flame drifting over brown standing water between reeds in low mist, its reflection on the water a hand's-breadth out of place",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1312 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-fen-light-ernie-image-turbo-bf16.webp",
   "tile": "img/foe-fen-light-ernie-image-turbo-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "ernie-image-turbo.safetensors",
   "arm_column": "ernie-image-turbo-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1312,
   "render_seconds": 1.46,
   "colour": {
    "mean_hue_deg": 31.0,
    "mean_saturation": 0.5125,
    "hue_spread_deg": 8.5,
    "resultant_R": 0.989,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_fen_light__ernie-turbo__768__s1312.jpg",
   "id": "foe-fen-light-ernie-image-turbo-bf16",
   "archive_id": "foe_fen_light__ernie-turbo__768__s1312",
   "cell_label": "",
   "at": "2026-08-23T16:03:16+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-ernie-turbo-bf16",
   "law": "cleared",
   "law_detail": "ernie-image turbo (baidu) \u2014 Apache License 2.0",
   "sid": "foe-fen-light-ernie-image-turbo-bf16"
  },
  {
   "subject": "FOE \u00b7 Fen-Light",
   "row": "",
   "column": "ernie-image-turbo-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a pale cold flame drifting over brown standing water between reeds in low mist, its reflection on the water a hand's-breadth out of place",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1312 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-fen-light-ernie-image-turbo-bf16-bare.webp",
   "tile": "img/foe-fen-light-ernie-image-turbo-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "ernie-image-turbo.safetensors",
   "arm_column": "ernie-image-turbo-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1312,
   "render_seconds": 1.44,
   "colour": {
    "mean_hue_deg": 68.3,
    "mean_saturation": 0.1908,
    "hue_spread_deg": 69.2,
    "resultant_R": 0.4821,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_fen_light__ernie-turbo__768__bare__s1312.jpg",
   "id": "foe-fen-light-ernie-image-turbo-bf16-bare",
   "archive_id": "foe_fen_light__ernie-turbo__768__bare__s1312",
   "cell_label": "",
   "at": "2026-08-23T17:37:32+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-ernie-turbo-bf16",
   "law": "cleared",
   "law_detail": "ernie-image turbo (baidu) \u2014 Apache License 2.0",
   "sid": "foe-fen-light-ernie-image-turbo-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Fen-Light",
   "row": "",
   "column": "kandinsky5-lite-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a pale cold flame drifting over brown standing water between reeds in low mist, its reflection on the water a hand's-breadth out of place",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1312 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-fen-light-kandinsky5-lite-bf16.webp",
   "tile": "img/foe-fen-light-kandinsky5-lite-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "kandinsky5lite_t2i.safetensors",
   "arm_column": "kandinsky5-lite-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1312,
   "render_seconds": 6.18,
   "colour": {
    "mean_hue_deg": 29.4,
    "mean_saturation": 0.3848,
    "hue_spread_deg": 7.1,
    "resultant_R": 0.9922,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_fen_light__kandinsky5-lite__768__s1312.jpg",
   "id": "foe-fen-light-kandinsky5-lite-bf16",
   "archive_id": "foe_fen_light__kandinsky5-lite__768__s1312",
   "cell_label": "",
   "at": "2026-08-23T16:33:11+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/p2-kandinsky5-lite-bf16",
   "law": "cleared",
   "law_detail": "kandinsky 5.0 image lite \u2014 The MIT License (MIT)",
   "sid": "foe-fen-light-kandinsky5-lite-bf16"
  },
  {
   "subject": "FOE \u00b7 Fen-Light",
   "row": "",
   "column": "kandinsky5-lite-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a pale cold flame drifting over brown standing water between reeds in low mist, its reflection on the water a hand's-breadth out of place",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1312 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-fen-light-kandinsky5-lite-bf16-bare.webp",
   "tile": "img/foe-fen-light-kandinsky5-lite-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "kandinsky5lite_t2i.safetensors",
   "arm_column": "kandinsky5-lite-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1312,
   "render_seconds": 6.14,
   "colour": {
    "mean_hue_deg": 22.5,
    "mean_saturation": 0.0764,
    "hue_spread_deg": 66.1,
    "resultant_R": 0.5142,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_fen_light__kandinsky5-lite__768__bare__s1312.jpg",
   "id": "foe-fen-light-kandinsky5-lite-bf16-bare",
   "archive_id": "foe_fen_light__kandinsky5-lite__768__bare__s1312",
   "cell_label": "",
   "at": "2026-08-23T17:46:52+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/p2-kandinsky5-lite-bf16",
   "law": "cleared",
   "law_detail": "kandinsky 5.0 image lite \u2014 The MIT License (MIT)",
   "sid": "foe-fen-light-kandinsky5-lite-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Salt-Father",
   "row": "",
   "column": "z-image-turbo-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a towering figure of jagged translucent white salt crystal looming full-figure on stone basin steps, dry husk-people half-merged into its glittering mass, its head one uncut crystal",
   "prompt_source": "foe.salt_father art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-salt-father-z-image-turbo-bf16.webp",
   "tile": "img/foe-salt-father-z-image-turbo-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_turbo_bf16.safetensors",
   "arm_column": "z-image-turbo-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1302,
   "render_seconds": 1.18,
   "colour": {
    "mean_hue_deg": 31.9,
    "mean_saturation": 0.2864,
    "hue_spread_deg": 4.2,
    "resultant_R": 0.9973,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_salt_father__ctrl-z-image-turbo__768__s1302.jpg",
   "id": "foe-salt-father-z-image-turbo-bf16",
   "archive_id": "foe_salt_father__ctrl-z-image-turbo__768__s1302",
   "cell_label": "",
   "at": "2026-08-23T09:56:52+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/ctrl-z-image-turbo",
   "law": "cleared",
   "law_detail": "z-image turbo (bf16) \u2014 Apache-2.0",
   "sid": "foe-salt-father-z-image-turbo-bf16"
  },
  {
   "subject": "FOE \u00b7 Salt-Father",
   "row": "",
   "column": "z-image-turbo-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a towering figure of jagged translucent white salt crystal looming full-figure on stone basin steps, dry husk-people half-merged into its glittering mass, its head one uncut crystal",
   "prompt_source": "foe.salt_father art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-salt-father-z-image-turbo-bf16-bare.webp",
   "tile": "img/foe-salt-father-z-image-turbo-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_turbo_bf16.safetensors",
   "arm_column": "z-image-turbo-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1302,
   "render_seconds": 1.21,
   "colour": {
    "mean_hue_deg": 215.1,
    "mean_saturation": 0.2416,
    "hue_spread_deg": 43.7,
    "resultant_R": 0.7477,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_salt_father__ctrl-z-image-turbo__768__bare__s1302.jpg",
   "id": "foe-salt-father-z-image-turbo-bf16-bare",
   "archive_id": "foe_salt_father__ctrl-z-image-turbo__768__bare__s1302",
   "cell_label": "",
   "at": "2026-08-23T16:42:55+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/ctrl-z-image-turbo",
   "law": "cleared",
   "law_detail": "z-image turbo (bf16) \u2014 Apache-2.0",
   "sid": "foe-salt-father-z-image-turbo-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Salt-Father",
   "row": "",
   "column": "flux2-klein-4b-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a towering figure of jagged translucent white salt crystal looming full-figure on stone basin steps, dry husk-people half-merged into its glittering mass, its head one uncut crystal",
   "prompt_source": "foe.salt_father art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-salt-father-flux2-klein-4b-bf16.webp",
   "tile": "img/foe-salt-father-flux2-klein-4b-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "flux-2-klein-4b.safetensors",
   "arm_column": "flux2-klein-4b-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": null,
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1302,
   "render_seconds": 0.6,
   "colour": {
    "mean_hue_deg": 25.3,
    "mean_saturation": 0.4656,
    "hue_spread_deg": 4.4,
    "resultant_R": 0.997,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_salt_father__flux2-klein-4b__768__s1302.jpg",
   "id": "foe-salt-father-flux2-klein-4b-bf16",
   "archive_id": "foe_salt_father__flux2-klein-4b__768__s1302",
   "cell_label": "",
   "at": "2026-08-23T10:32:45+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-klein4b-bf16",
   "law": "cleared",
   "law_detail": "flux.2 [klein] 4B \u2014 Apache License 2.0",
   "sid": "foe-salt-father-flux2-klein-4b-bf16"
  },
  {
   "subject": "FOE \u00b7 Salt-Father",
   "row": "",
   "column": "flux2-klein-4b-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a towering figure of jagged translucent white salt crystal looming full-figure on stone basin steps, dry husk-people half-merged into its glittering mass, its head one uncut crystal",
   "prompt_source": "foe.salt_father art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-salt-father-flux2-klein-4b-bf16-bare.webp",
   "tile": "img/foe-salt-father-flux2-klein-4b-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "flux-2-klein-4b.safetensors",
   "arm_column": "flux2-klein-4b-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": null,
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1302,
   "render_seconds": 0.61,
   "colour": {
    "mean_hue_deg": 154.1,
    "mean_saturation": 0.0809,
    "hue_spread_deg": 100.1,
    "resultant_R": 0.2171,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_salt_father__flux2-klein-4b__768__bare__s1302.jpg",
   "id": "foe-salt-father-flux2-klein-4b-bf16-bare",
   "archive_id": "foe_salt_father__flux2-klein-4b__768__bare__s1302",
   "cell_label": "",
   "at": "2026-08-23T16:44:35+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-klein4b-bf16",
   "law": "cleared",
   "law_detail": "flux.2 [klein] 4B \u2014 Apache License 2.0",
   "sid": "foe-salt-father-flux2-klein-4b-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Salt-Father",
   "row": "",
   "column": "z-image-base-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a towering figure of jagged translucent white salt crystal looming full-figure on stone basin steps, dry husk-people half-merged into its glittering mass, its head one uncut crystal",
   "prompt_source": "foe.salt_father art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-salt-father-z-image-base-bf16.webp",
   "tile": "img/foe-salt-father-z-image-base-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_bf16.safetensors",
   "arm_column": "z-image-base-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 4.0,
   "width": 768,
   "height": 768,
   "seed": 1302,
   "render_seconds": 7.87,
   "colour": {
    "mean_hue_deg": 34.3,
    "mean_saturation": 0.3993,
    "hue_spread_deg": 5.1,
    "resultant_R": 0.996,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_salt_father__z-image-base__768__s1302.jpg",
   "id": "foe-salt-father-z-image-base-bf16",
   "archive_id": "foe_salt_father__z-image-base__768__s1302",
   "cell_label": "",
   "at": "2026-08-23T10:53:37+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-zimage-base-bf16",
   "law": "cleared",
   "law_detail": "z-image base (undistilled) \u2014 Apache-2.0",
   "sid": "foe-salt-father-z-image-base-bf16"
  },
  {
   "subject": "FOE \u00b7 Salt-Father",
   "row": "",
   "column": "z-image-base-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a towering figure of jagged translucent white salt crystal looming full-figure on stone basin steps, dry husk-people half-merged into its glittering mass, its head one uncut crystal",
   "prompt_source": "foe.salt_father art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-salt-father-z-image-base-bf16-bare.webp",
   "tile": "img/foe-salt-father-z-image-base-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_bf16.safetensors",
   "arm_column": "z-image-base-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 4.0,
   "width": 768,
   "height": 768,
   "seed": 1302,
   "render_seconds": 7.82,
   "colour": {
    "mean_hue_deg": 35.3,
    "mean_saturation": 0.0297,
    "hue_spread_deg": 40.3,
    "resultant_R": 0.7804,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_salt_father__z-image-base__768__bare__s1302.jpg",
   "id": "foe-salt-father-z-image-base-bf16-bare",
   "archive_id": "foe_salt_father__z-image-base__768__bare__s1302",
   "cell_label": "",
   "at": "2026-08-23T17:23:45+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-zimage-base-bf16",
   "law": "cleared",
   "law_detail": "z-image base (undistilled) \u2014 Apache-2.0",
   "sid": "foe-salt-father-z-image-base-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Salt-Father",
   "row": "",
   "column": "hidream-o1-dev-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a towering figure of jagged translucent white salt crystal looming full-figure on stone basin steps, dry husk-people half-merged into its glittering mass, its head one uncut crystal",
   "prompt_source": "foe.salt_father art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-salt-father-hidream-o1-dev-fp8.webp",
   "tile": "img/foe-salt-father-hidream-o1-dev-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "hidream_o1_image_dev_fp8_scaled.safetensors",
   "arm_column": "hidream-o1-dev-fp8",
   "lora": [],
   "sampler": null,
   "scheduler": "normal",
   "steps": 32,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1302,
   "render_seconds": 2.53,
   "colour": {
    "mean_hue_deg": 24.7,
    "mean_saturation": 0.3684,
    "hue_spread_deg": 8.7,
    "resultant_R": 0.9886,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_salt_father__hidream-o1-dev__768__s1302.jpg",
   "id": "foe-salt-father-hidream-o1-dev-fp8",
   "archive_id": "foe_salt_father__hidream-o1-dev__768__s1302",
   "cell_label": "",
   "at": "2026-08-23T11:18:41+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-hidream-o1-dev-fp8",
   "law": "cleared",
   "law_detail": "hidream-o1-image-dev \u2014 MIT",
   "sid": "foe-salt-father-hidream-o1-dev-fp8"
  },
  {
   "subject": "FOE \u00b7 Salt-Father",
   "row": "",
   "column": "hidream-o1-dev-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a towering figure of jagged translucent white salt crystal looming full-figure on stone basin steps, dry husk-people half-merged into its glittering mass, its head one uncut crystal",
   "prompt_source": "foe.salt_father art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-salt-father-hidream-o1-dev-fp8-bare.webp",
   "tile": "img/foe-salt-father-hidream-o1-dev-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "hidream_o1_image_dev_fp8_scaled.safetensors",
   "arm_column": "hidream-o1-dev-fp8",
   "lora": [],
   "sampler": null,
   "scheduler": "normal",
   "steps": 32,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1302,
   "render_seconds": 2.44,
   "colour": {
    "mean_hue_deg": 256.0,
    "mean_saturation": 0.2286,
    "hue_spread_deg": 70.2,
    "resultant_R": 0.4719,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_salt_father__hidream-o1-dev__768__bare__s1302.jpg",
   "id": "foe-salt-father-hidream-o1-dev-fp8-bare",
   "archive_id": "foe_salt_father__hidream-o1-dev__768__bare__s1302",
   "cell_label": "",
   "at": "2026-08-23T16:46:28+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-hidream-o1-dev-fp8",
   "law": "cleared",
   "law_detail": "hidream-o1-image-dev \u2014 MIT",
   "sid": "foe-salt-father-hidream-o1-dev-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 Salt-Father",
   "row": "",
   "column": "chroma1-hd-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a towering figure of jagged translucent white salt crystal looming full-figure on stone basin steps, dry husk-people half-merged into its glittering mass, its head one uncut crystal",
   "prompt_source": "foe.salt_father art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-salt-father-chroma1-hd-fp8.webp",
   "tile": "img/foe-salt-father-chroma1-hd-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "Chroma1-HD-fp8mixed.safetensors",
   "arm_column": "chroma1-hd-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "beta",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1302,
   "render_seconds": 7.64,
   "colour": {
    "mean_hue_deg": 35.3,
    "mean_saturation": 0.5666,
    "hue_spread_deg": 3.7,
    "resultant_R": 0.9979,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_salt_father__chroma1-hd__768__s1302.jpg",
   "id": "foe-salt-father-chroma1-hd-fp8",
   "archive_id": "foe_salt_father__chroma1-hd__768__s1302",
   "cell_label": "",
   "at": "2026-08-23T11:32:42+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-chroma1-hd-fp8",
   "law": "cleared",
   "law_detail": "chroma1-hd (fp8mixed repack) \u2014 Apache-2.0",
   "sid": "foe-salt-father-chroma1-hd-fp8"
  },
  {
   "subject": "FOE \u00b7 Salt-Father",
   "row": "",
   "column": "chroma1-hd-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a towering figure of jagged translucent white salt crystal looming full-figure on stone basin steps, dry husk-people half-merged into its glittering mass, its head one uncut crystal",
   "prompt_source": "foe.salt_father art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-salt-father-chroma1-hd-fp8-bare.webp",
   "tile": "img/foe-salt-father-chroma1-hd-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "Chroma1-HD-fp8mixed.safetensors",
   "arm_column": "chroma1-hd-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "beta",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1302,
   "render_seconds": 7.77,
   "colour": {
    "mean_hue_deg": 157.3,
    "mean_saturation": 0.3004,
    "hue_spread_deg": 75.2,
    "resultant_R": 0.4231,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_salt_father__chroma1-hd__768__bare__s1302.jpg",
   "id": "foe-salt-father-chroma1-hd-fp8-bare",
   "archive_id": "foe_salt_father__chroma1-hd__768__bare__s1302",
   "cell_label": "",
   "at": "2026-08-23T17:30:30+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-chroma1-hd-fp8",
   "law": "cleared",
   "law_detail": "chroma1-hd (fp8mixed repack) \u2014 Apache-2.0",
   "sid": "foe-salt-father-chroma1-hd-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 Salt-Father",
   "row": "",
   "column": "krea2-turbo-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a towering figure of jagged translucent white salt crystal looming full-figure on stone basin steps, dry husk-people half-merged into its glittering mass, its head one uncut crystal",
   "prompt_source": "foe.salt_father art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-salt-father-krea2-turbo-fp8.webp",
   "tile": "img/foe-salt-father-krea2-turbo-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "krea2_turbo_fp8_scaled.safetensors",
   "arm_column": "krea2-turbo-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1302,
   "render_seconds": 2.09,
   "colour": {
    "mean_hue_deg": 25.4,
    "mean_saturation": 0.5223,
    "hue_spread_deg": 4.5,
    "resultant_R": 0.9969,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_salt_father__krea2-turbo__768__s1302.jpg",
   "id": "foe-salt-father-krea2-turbo-fp8",
   "archive_id": "foe_salt_father__krea2-turbo__768__s1302",
   "cell_label": "",
   "at": "2026-08-23T10:42:01+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-krea2-turbo-fp8",
   "law": "cleared",
   "law_detail": "krea 2 turbo (fp8_scaled) \u2014 Krea 2 Community License Agreement v.1",
   "sid": "foe-salt-father-krea2-turbo-fp8"
  },
  {
   "subject": "FOE \u00b7 Salt-Father",
   "row": "",
   "column": "krea2-turbo-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a towering figure of jagged translucent white salt crystal looming full-figure on stone basin steps, dry husk-people half-merged into its glittering mass, its head one uncut crystal",
   "prompt_source": "foe.salt_father art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-salt-father-krea2-turbo-fp8-bare.webp",
   "tile": "img/foe-salt-father-krea2-turbo-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "krea2_turbo_fp8_scaled.safetensors",
   "arm_column": "krea2-turbo-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1302,
   "render_seconds": 2.05,
   "colour": {
    "mean_hue_deg": 72.5,
    "mean_saturation": 0.2331,
    "hue_spread_deg": 71.3,
    "resultant_R": 0.4606,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_salt_father__krea2-turbo__768__bare__s1302.jpg",
   "id": "foe-salt-father-krea2-turbo-fp8-bare",
   "archive_id": "foe_salt_father__krea2-turbo__768__bare__s1302",
   "cell_label": "",
   "at": "2026-08-23T16:50:14+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-krea2-turbo-fp8",
   "law": "cleared",
   "law_detail": "krea 2 turbo (fp8_scaled) \u2014 Krea 2 Community License Agreement v.1",
   "sid": "foe-salt-father-krea2-turbo-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 Salt-Father",
   "row": "",
   "column": "mage-flow-turbo-int8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a towering figure of jagged translucent white salt crystal looming full-figure on stone basin steps, dry husk-people half-merged into its glittering mass, its head one uncut crystal",
   "prompt_source": "foe.salt_father art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-salt-father-mage-flow-turbo-int8.webp",
   "tile": "img/foe-salt-father-mage-flow-turbo-int8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "mage_flow_turbo_int8_convrot.safetensors",
   "arm_column": "mage-flow-turbo-int8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1302,
   "render_seconds": 0.78,
   "colour": {
    "mean_hue_deg": 32.9,
    "mean_saturation": 0.4624,
    "hue_spread_deg": 5.0,
    "resultant_R": 0.9962,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_salt_father__mageflow-turbo__768__s1302.jpg",
   "id": "foe-salt-father-mage-flow-turbo-int8",
   "archive_id": "foe_salt_father__mageflow-turbo__768__s1302",
   "cell_label": "",
   "at": "2026-08-23T10:38:25+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-mageflow-turbo-int8",
   "law": "cleared",
   "law_detail": "mage-flow 4B turbo (int8) \u2014 MIT License",
   "sid": "foe-salt-father-mage-flow-turbo-int8"
  },
  {
   "subject": "FOE \u00b7 Salt-Father",
   "row": "",
   "column": "mage-flow-turbo-int8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a towering figure of jagged translucent white salt crystal looming full-figure on stone basin steps, dry husk-people half-merged into its glittering mass, its head one uncut crystal",
   "prompt_source": "foe.salt_father art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-salt-father-mage-flow-turbo-int8-bare.webp",
   "tile": "img/foe-salt-father-mage-flow-turbo-int8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "mage_flow_turbo_int8_convrot.safetensors",
   "arm_column": "mage-flow-turbo-int8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1302,
   "render_seconds": 0.89,
   "colour": {
    "mean_hue_deg": 209.6,
    "mean_saturation": 0.1821,
    "hue_spread_deg": 70.2,
    "resultant_R": 0.4723,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_salt_father__mageflow-turbo__768__bare__s1302.jpg",
   "id": "foe-salt-father-mage-flow-turbo-int8-bare",
   "archive_id": "foe_salt_father__mageflow-turbo__768__bare__s1302",
   "cell_label": "",
   "at": "2026-08-23T17:36:45+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-mageflow-turbo-int8",
   "law": "cleared",
   "law_detail": "mage-flow 4B turbo (int8) \u2014 MIT License",
   "sid": "foe-salt-father-mage-flow-turbo-int8-bare"
  },
  {
   "subject": "FOE \u00b7 Salt-Father",
   "row": "",
   "column": "ernie-image-turbo-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a towering figure of jagged translucent white salt crystal looming full-figure on stone basin steps, dry husk-people half-merged into its glittering mass, its head one uncut crystal",
   "prompt_source": "foe.salt_father art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-salt-father-ernie-image-turbo-bf16.webp",
   "tile": "img/foe-salt-father-ernie-image-turbo-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "ernie-image-turbo.safetensors",
   "arm_column": "ernie-image-turbo-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1302,
   "render_seconds": 1.46,
   "colour": {
    "mean_hue_deg": 27.9,
    "mean_saturation": 0.6023,
    "hue_spread_deg": 3.9,
    "resultant_R": 0.9977,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_salt_father__ernie-turbo__768__s1302.jpg",
   "id": "foe-salt-father-ernie-image-turbo-bf16",
   "archive_id": "foe_salt_father__ernie-turbo__768__s1302",
   "cell_label": "",
   "at": "2026-08-23T16:03:21+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-ernie-turbo-bf16",
   "law": "cleared",
   "law_detail": "ernie-image turbo (baidu) \u2014 Apache License 2.0",
   "sid": "foe-salt-father-ernie-image-turbo-bf16"
  },
  {
   "subject": "FOE \u00b7 Salt-Father",
   "row": "",
   "column": "ernie-image-turbo-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a towering figure of jagged translucent white salt crystal looming full-figure on stone basin steps, dry husk-people half-merged into its glittering mass, its head one uncut crystal",
   "prompt_source": "foe.salt_father art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-salt-father-ernie-image-turbo-bf16-bare.webp",
   "tile": "img/foe-salt-father-ernie-image-turbo-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "ernie-image-turbo.safetensors",
   "arm_column": "ernie-image-turbo-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1302,
   "render_seconds": 1.43,
   "colour": {
    "mean_hue_deg": 45.3,
    "mean_saturation": 0.3058,
    "hue_spread_deg": 40.6,
    "resultant_R": 0.778,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_salt_father__ernie-turbo__768__bare__s1302.jpg",
   "id": "foe-salt-father-ernie-image-turbo-bf16-bare",
   "archive_id": "foe_salt_father__ernie-turbo__768__bare__s1302",
   "cell_label": "",
   "at": "2026-08-23T17:37:37+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-ernie-turbo-bf16",
   "law": "cleared",
   "law_detail": "ernie-image turbo (baidu) \u2014 Apache License 2.0",
   "sid": "foe-salt-father-ernie-image-turbo-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Salt-Father",
   "row": "",
   "column": "kandinsky5-lite-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a towering figure of jagged translucent white salt crystal looming full-figure on stone basin steps, dry husk-people half-merged into its glittering mass, its head one uncut crystal",
   "prompt_source": "foe.salt_father art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-salt-father-kandinsky5-lite-bf16.webp",
   "tile": "img/foe-salt-father-kandinsky5-lite-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "kandinsky5lite_t2i.safetensors",
   "arm_column": "kandinsky5-lite-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1302,
   "render_seconds": 6.24,
   "colour": {
    "mean_hue_deg": 30.6,
    "mean_saturation": 0.3935,
    "hue_spread_deg": 4.5,
    "resultant_R": 0.997,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_salt_father__kandinsky5-lite__768__s1302.jpg",
   "id": "foe-salt-father-kandinsky5-lite-bf16",
   "archive_id": "foe_salt_father__kandinsky5-lite__768__s1302",
   "cell_label": "",
   "at": "2026-08-23T13:00:06+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/p2-kandinsky5-lite-bf16",
   "law": "cleared",
   "law_detail": "kandinsky 5.0 image lite \u2014 The MIT License (MIT)",
   "sid": "foe-salt-father-kandinsky5-lite-bf16"
  },
  {
   "subject": "FOE \u00b7 Salt-Father",
   "row": "",
   "column": "kandinsky5-lite-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a towering figure of jagged translucent white salt crystal looming full-figure on stone basin steps, dry husk-people half-merged into its glittering mass, its head one uncut crystal",
   "prompt_source": "foe.salt_father art.prompt_seed from foes.yml, verbatim. Composed as ArtService.portraitAsk's foe authored-seed leg (ArtService.java:2256) \u2192 assembleArtPrompt(style, trailMask(subject, maskClause), null) with NO mask clause \u2014 an unmasked foe, which is byte-identical to assembleArtPrompt(style, subject, null). Source: ~/signalborne/backend-spring/src/main/resources/content/sorrowmoor-cove/campaign.yml at master tip (v0.875.1); style clauses from the `art` block (R2a / COPY-LIVING-COVE \u00a7A, style + region_style + location_style + item_style + place_style). | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_standard-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-salt-father-kandinsky5-lite-bf16-bare.webp",
   "tile": "img/foe-salt-father-kandinsky5-lite-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "kandinsky5lite_t2i.safetensors",
   "arm_column": "kandinsky5-lite-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1302,
   "render_seconds": 6.18,
   "colour": {
    "mean_hue_deg": 212.3,
    "mean_saturation": 0.3116,
    "hue_spread_deg": 49.8,
    "resultant_R": 0.6859,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_salt_father__kandinsky5-lite__768__bare__s1302.jpg",
   "id": "foe-salt-father-kandinsky5-lite-bf16-bare",
   "archive_id": "foe_salt_father__kandinsky5-lite__768__bare__s1302",
   "cell_label": "",
   "at": "2026-08-23T17:47:10+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/p2-kandinsky5-lite-bf16",
   "law": "cleared",
   "law_detail": "kandinsky 5.0 image lite \u2014 The MIT License (MIT)",
   "sid": "foe-salt-father-kandinsky5-lite-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Barnacle-Shirt",
   "row": "",
   "column": "z-image-turbo-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a humanoid figure entirely crusted in white-grey barnacles standing in shallow water beneath wharf timbers",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1313 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-barnacle-shirt-z-image-turbo-bf16.webp",
   "tile": "img/foe-barnacle-shirt-z-image-turbo-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_turbo_bf16.safetensors",
   "arm_column": "z-image-turbo-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1313,
   "render_seconds": 1.21,
   "colour": {
    "mean_hue_deg": 35.9,
    "mean_saturation": 0.3592,
    "hue_spread_deg": 13.8,
    "resultant_R": 0.9716,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_barnacle_shirt__ctrl-z-image-turbo__768__s1313.jpg",
   "id": "foe-barnacle-shirt-z-image-turbo-bf16",
   "archive_id": "foe_barnacle_shirt__ctrl-z-image-turbo__768__s1313",
   "cell_label": "",
   "at": "2026-08-23T15:20:31+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/ctrl-z-image-turbo",
   "law": "cleared",
   "law_detail": "z-image turbo (bf16) \u2014 Apache-2.0",
   "sid": "foe-barnacle-shirt-z-image-turbo-bf16"
  },
  {
   "subject": "FOE \u00b7 Barnacle-Shirt",
   "row": "",
   "column": "z-image-turbo-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a humanoid figure entirely crusted in white-grey barnacles standing in shallow water beneath wharf timbers",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1313 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-barnacle-shirt-z-image-turbo-bf16-bare.webp",
   "tile": "img/foe-barnacle-shirt-z-image-turbo-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_turbo_bf16.safetensors",
   "arm_column": "z-image-turbo-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1313,
   "render_seconds": 1.21,
   "colour": {
    "mean_hue_deg": 56.2,
    "mean_saturation": 0.1614,
    "hue_spread_deg": 46.9,
    "resultant_R": 0.7151,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_barnacle_shirt__ctrl-z-image-turbo__768__bare__s1313.jpg",
   "id": "foe-barnacle-shirt-z-image-turbo-bf16-bare",
   "archive_id": "foe_barnacle_shirt__ctrl-z-image-turbo__768__bare__s1313",
   "cell_label": "",
   "at": "2026-08-23T17:21:15+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/ctrl-z-image-turbo",
   "law": "cleared",
   "law_detail": "z-image turbo (bf16) \u2014 Apache-2.0",
   "sid": "foe-barnacle-shirt-z-image-turbo-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Barnacle-Shirt",
   "row": "",
   "column": "flux2-klein-4b-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a humanoid figure entirely crusted in white-grey barnacles standing in shallow water beneath wharf timbers",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1313 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-barnacle-shirt-flux2-klein-4b-bf16.webp",
   "tile": "img/foe-barnacle-shirt-flux2-klein-4b-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "flux-2-klein-4b.safetensors",
   "arm_column": "flux2-klein-4b-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": null,
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1313,
   "render_seconds": 0.62,
   "colour": {
    "mean_hue_deg": 32.6,
    "mean_saturation": 0.3542,
    "hue_spread_deg": 8.3,
    "resultant_R": 0.9895,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_barnacle_shirt__flux2-klein-4b__768__s1313.jpg",
   "id": "foe-barnacle-shirt-flux2-klein-4b-bf16",
   "archive_id": "foe_barnacle_shirt__flux2-klein-4b__768__s1313",
   "cell_label": "",
   "at": "2026-08-23T15:22:29+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-klein4b-bf16",
   "law": "cleared",
   "law_detail": "flux.2 [klein] 4B \u2014 Apache License 2.0",
   "sid": "foe-barnacle-shirt-flux2-klein-4b-bf16"
  },
  {
   "subject": "FOE \u00b7 Barnacle-Shirt",
   "row": "",
   "column": "flux2-klein-4b-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a humanoid figure entirely crusted in white-grey barnacles standing in shallow water beneath wharf timbers",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1313 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-barnacle-shirt-flux2-klein-4b-bf16-bare.webp",
   "tile": "img/foe-barnacle-shirt-flux2-klein-4b-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "flux-2-klein-4b.safetensors",
   "arm_column": "flux2-klein-4b-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": null,
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1313,
   "render_seconds": 0.61,
   "colour": {
    "mean_hue_deg": 121.8,
    "mean_saturation": 0.1889,
    "hue_spread_deg": 63.6,
    "resultant_R": 0.5401,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_barnacle_shirt__flux2-klein-4b__768__bare__s1313.jpg",
   "id": "foe-barnacle-shirt-flux2-klein-4b-bf16-bare",
   "archive_id": "foe_barnacle_shirt__flux2-klein-4b__768__bare__s1313",
   "cell_label": "",
   "at": "2026-08-23T17:22:04+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-klein4b-bf16",
   "law": "cleared",
   "law_detail": "flux.2 [klein] 4B \u2014 Apache License 2.0",
   "sid": "foe-barnacle-shirt-flux2-klein-4b-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Barnacle-Shirt",
   "row": "",
   "column": "z-image-base-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a humanoid figure entirely crusted in white-grey barnacles standing in shallow water beneath wharf timbers",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1313 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-barnacle-shirt-z-image-base-bf16.webp",
   "tile": "img/foe-barnacle-shirt-z-image-base-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_bf16.safetensors",
   "arm_column": "z-image-base-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 4.0,
   "width": 768,
   "height": 768,
   "seed": 1313,
   "render_seconds": 7.91,
   "colour": {
    "mean_hue_deg": 37.8,
    "mean_saturation": 0.4347,
    "hue_spread_deg": 5.6,
    "resultant_R": 0.9953,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_barnacle_shirt__z-image-base__768__s1313.jpg",
   "id": "foe-barnacle-shirt-z-image-base-bf16",
   "archive_id": "foe_barnacle_shirt__z-image-base__768__s1313",
   "cell_label": "",
   "at": "2026-08-23T15:26:21+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-zimage-base-bf16",
   "law": "cleared",
   "law_detail": "z-image base (undistilled) \u2014 Apache-2.0",
   "sid": "foe-barnacle-shirt-z-image-base-bf16"
  },
  {
   "subject": "FOE \u00b7 Barnacle-Shirt",
   "row": "",
   "column": "z-image-base-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a humanoid figure entirely crusted in white-grey barnacles standing in shallow water beneath wharf timbers",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1313 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-barnacle-shirt-z-image-base-bf16-bare.webp",
   "tile": "img/foe-barnacle-shirt-z-image-base-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_bf16.safetensors",
   "arm_column": "z-image-base-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 4.0,
   "width": 768,
   "height": 768,
   "seed": 1313,
   "render_seconds": 7.85,
   "colour": {
    "mean_hue_deg": 15.2,
    "mean_saturation": 0.2078,
    "hue_spread_deg": 113.7,
    "resultant_R": 0.1398,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_barnacle_shirt__z-image-base__768__bare__s1313.jpg",
   "id": "foe-barnacle-shirt-z-image-base-bf16-bare",
   "archive_id": "foe_barnacle_shirt__z-image-base__768__bare__s1313",
   "cell_label": "",
   "at": "2026-08-23T17:24:09+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-zimage-base-bf16",
   "law": "cleared",
   "law_detail": "z-image base (undistilled) \u2014 Apache-2.0",
   "sid": "foe-barnacle-shirt-z-image-base-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Barnacle-Shirt",
   "row": "",
   "column": "hidream-o1-dev-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a humanoid figure entirely crusted in white-grey barnacles standing in shallow water beneath wharf timbers",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1313 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-barnacle-shirt-hidream-o1-dev-fp8.webp",
   "tile": "img/foe-barnacle-shirt-hidream-o1-dev-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "hidream_o1_image_dev_fp8_scaled.safetensors",
   "arm_column": "hidream-o1-dev-fp8",
   "lora": [],
   "sampler": null,
   "scheduler": "normal",
   "steps": 32,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1313,
   "render_seconds": 2.46,
   "colour": {
    "mean_hue_deg": 27.2,
    "mean_saturation": 0.3636,
    "hue_spread_deg": 5.1,
    "resultant_R": 0.9961,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_barnacle_shirt__hidream-o1-dev__768__s1313.jpg",
   "id": "foe-barnacle-shirt-hidream-o1-dev-fp8",
   "archive_id": "foe_barnacle_shirt__hidream-o1-dev__768__s1313",
   "cell_label": "",
   "at": "2026-08-23T15:38:14+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-hidream-o1-dev-fp8",
   "law": "cleared",
   "law_detail": "hidream-o1-image-dev \u2014 MIT",
   "sid": "foe-barnacle-shirt-hidream-o1-dev-fp8"
  },
  {
   "subject": "FOE \u00b7 Barnacle-Shirt",
   "row": "",
   "column": "hidream-o1-dev-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a humanoid figure entirely crusted in white-grey barnacles standing in shallow water beneath wharf timbers",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1313 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-barnacle-shirt-hidream-o1-dev-fp8-bare.webp",
   "tile": "img/foe-barnacle-shirt-hidream-o1-dev-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "hidream_o1_image_dev_fp8_scaled.safetensors",
   "arm_column": "hidream-o1-dev-fp8",
   "lora": [],
   "sampler": null,
   "scheduler": "normal",
   "steps": 32,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1313,
   "render_seconds": 2.5,
   "colour": {
    "mean_hue_deg": 33.9,
    "mean_saturation": 0.2098,
    "hue_spread_deg": 8.4,
    "resultant_R": 0.9893,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_barnacle_shirt__hidream-o1-dev__768__bare__s1313.jpg",
   "id": "foe-barnacle-shirt-hidream-o1-dev-fp8-bare",
   "archive_id": "foe_barnacle_shirt__hidream-o1-dev__768__bare__s1313",
   "cell_label": "",
   "at": "2026-08-23T17:27:48+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-hidream-o1-dev-fp8",
   "law": "cleared",
   "law_detail": "hidream-o1-image-dev \u2014 MIT",
   "sid": "foe-barnacle-shirt-hidream-o1-dev-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 Barnacle-Shirt",
   "row": "",
   "column": "chroma1-hd-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a humanoid figure entirely crusted in white-grey barnacles standing in shallow water beneath wharf timbers",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1313 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-barnacle-shirt-chroma1-hd-fp8.webp",
   "tile": "img/foe-barnacle-shirt-chroma1-hd-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "Chroma1-HD-fp8mixed.safetensors",
   "arm_column": "chroma1-hd-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "beta",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1313,
   "render_seconds": 7.52,
   "colour": {
    "mean_hue_deg": 36.0,
    "mean_saturation": 0.5945,
    "hue_spread_deg": 6.8,
    "resultant_R": 0.993,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_barnacle_shirt__chroma1-hd__768__s1313.jpg",
   "id": "foe-barnacle-shirt-chroma1-hd-fp8",
   "archive_id": "foe_barnacle_shirt__chroma1-hd__768__s1313",
   "cell_label": "",
   "at": "2026-08-23T15:45:18+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-chroma1-hd-fp8",
   "law": "cleared",
   "law_detail": "chroma1-hd (fp8mixed repack) \u2014 Apache-2.0",
   "sid": "foe-barnacle-shirt-chroma1-hd-fp8"
  },
  {
   "subject": "FOE \u00b7 Barnacle-Shirt",
   "row": "",
   "column": "chroma1-hd-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a humanoid figure entirely crusted in white-grey barnacles standing in shallow water beneath wharf timbers",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1313 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-barnacle-shirt-chroma1-hd-fp8-bare.webp",
   "tile": "img/foe-barnacle-shirt-chroma1-hd-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "Chroma1-HD-fp8mixed.safetensors",
   "arm_column": "chroma1-hd-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "beta",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1313,
   "render_seconds": 7.64,
   "colour": {
    "mean_hue_deg": 96.3,
    "mean_saturation": 0.2193,
    "hue_spread_deg": 44.0,
    "resultant_R": 0.7447,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_barnacle_shirt__chroma1-hd__768__bare__s1313.jpg",
   "id": "foe-barnacle-shirt-chroma1-hd-fp8-bare",
   "archive_id": "foe_barnacle_shirt__chroma1-hd__768__bare__s1313",
   "cell_label": "",
   "at": "2026-08-23T17:30:54+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-chroma1-hd-fp8",
   "law": "cleared",
   "law_detail": "chroma1-hd (fp8mixed repack) \u2014 Apache-2.0",
   "sid": "foe-barnacle-shirt-chroma1-hd-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 Barnacle-Shirt",
   "row": "",
   "column": "krea2-turbo-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a humanoid figure entirely crusted in white-grey barnacles standing in shallow water beneath wharf timbers",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1313 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-barnacle-shirt-krea2-turbo-fp8.webp",
   "tile": "img/foe-barnacle-shirt-krea2-turbo-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "krea2_turbo_fp8_scaled.safetensors",
   "arm_column": "krea2-turbo-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1313,
   "render_seconds": 2.08,
   "colour": {
    "mean_hue_deg": 28.2,
    "mean_saturation": 0.4005,
    "hue_spread_deg": 6.4,
    "resultant_R": 0.9939,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_barnacle_shirt__krea2-turbo__768__s1313.jpg",
   "id": "foe-barnacle-shirt-krea2-turbo-fp8",
   "archive_id": "foe_barnacle_shirt__krea2-turbo__768__s1313",
   "cell_label": "",
   "at": "2026-08-23T15:58:22+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-krea2-turbo-fp8",
   "law": "cleared",
   "law_detail": "krea 2 turbo (fp8_scaled) \u2014 Krea 2 Community License Agreement v.1",
   "sid": "foe-barnacle-shirt-krea2-turbo-fp8"
  },
  {
   "subject": "FOE \u00b7 Barnacle-Shirt",
   "row": "",
   "column": "krea2-turbo-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a humanoid figure entirely crusted in white-grey barnacles standing in shallow water beneath wharf timbers",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1313 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-barnacle-shirt-krea2-turbo-fp8-bare.webp",
   "tile": "img/foe-barnacle-shirt-krea2-turbo-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "krea2_turbo_fp8_scaled.safetensors",
   "arm_column": "krea2-turbo-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1313,
   "render_seconds": 2.04,
   "colour": {
    "mean_hue_deg": 47.6,
    "mean_saturation": 0.2033,
    "hue_spread_deg": 31.2,
    "resultant_R": 0.8621,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_barnacle_shirt__krea2-turbo__768__bare__s1313.jpg",
   "id": "foe-barnacle-shirt-krea2-turbo-fp8-bare",
   "archive_id": "foe_barnacle_shirt__krea2-turbo__768__bare__s1313",
   "cell_label": "",
   "at": "2026-08-23T17:35:30+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-krea2-turbo-fp8",
   "law": "cleared",
   "law_detail": "krea 2 turbo (fp8_scaled) \u2014 Krea 2 Community License Agreement v.1",
   "sid": "foe-barnacle-shirt-krea2-turbo-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 Barnacle-Shirt",
   "row": "",
   "column": "mage-flow-turbo-int8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a humanoid figure entirely crusted in white-grey barnacles standing in shallow water beneath wharf timbers",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1313 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-barnacle-shirt-mage-flow-turbo-int8.webp",
   "tile": "img/foe-barnacle-shirt-mage-flow-turbo-int8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "mage_flow_turbo_int8_convrot.safetensors",
   "arm_column": "mage-flow-turbo-int8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1313,
   "render_seconds": 0.78,
   "colour": {
    "mean_hue_deg": 35.6,
    "mean_saturation": 0.4463,
    "hue_spread_deg": 8.9,
    "resultant_R": 0.9881,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_barnacle_shirt__mageflow-turbo__768__s1313.jpg",
   "id": "foe-barnacle-shirt-mage-flow-turbo-int8",
   "archive_id": "foe_barnacle_shirt__mageflow-turbo__768__s1313",
   "cell_label": "",
   "at": "2026-08-23T16:01:36+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-mageflow-turbo-int8",
   "law": "cleared",
   "law_detail": "mage-flow 4B turbo (int8) \u2014 MIT License",
   "sid": "foe-barnacle-shirt-mage-flow-turbo-int8"
  },
  {
   "subject": "FOE \u00b7 Barnacle-Shirt",
   "row": "",
   "column": "mage-flow-turbo-int8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a humanoid figure entirely crusted in white-grey barnacles standing in shallow water beneath wharf timbers",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1313 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-barnacle-shirt-mage-flow-turbo-int8-bare.webp",
   "tile": "img/foe-barnacle-shirt-mage-flow-turbo-int8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "mage_flow_turbo_int8_convrot.safetensors",
   "arm_column": "mage-flow-turbo-int8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1313,
   "render_seconds": 0.91,
   "colour": {
    "mean_hue_deg": 166.2,
    "mean_saturation": 0.1571,
    "hue_spread_deg": 84.3,
    "resultant_R": 0.339,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_barnacle_shirt__mageflow-turbo__768__bare__s1313.jpg",
   "id": "foe-barnacle-shirt-mage-flow-turbo-int8-bare",
   "archive_id": "foe_barnacle_shirt__mageflow-turbo__768__bare__s1313",
   "cell_label": "",
   "at": "2026-08-23T17:36:48+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-mageflow-turbo-int8",
   "law": "cleared",
   "law_detail": "mage-flow 4B turbo (int8) \u2014 MIT License",
   "sid": "foe-barnacle-shirt-mage-flow-turbo-int8-bare"
  },
  {
   "subject": "FOE \u00b7 Barnacle-Shirt",
   "row": "",
   "column": "ernie-image-turbo-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a humanoid figure entirely crusted in white-grey barnacles standing in shallow water beneath wharf timbers",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1313 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-barnacle-shirt-ernie-image-turbo-bf16.webp",
   "tile": "img/foe-barnacle-shirt-ernie-image-turbo-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "ernie-image-turbo.safetensors",
   "arm_column": "ernie-image-turbo-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1313,
   "render_seconds": 1.46,
   "colour": {
    "mean_hue_deg": 31.8,
    "mean_saturation": 0.5453,
    "hue_spread_deg": 4.2,
    "resultant_R": 0.9973,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_barnacle_shirt__ernie-turbo__768__s1313.jpg",
   "id": "foe-barnacle-shirt-ernie-image-turbo-bf16",
   "archive_id": "foe_barnacle_shirt__ernie-turbo__768__s1313",
   "cell_label": "",
   "at": "2026-08-23T16:03:25+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-ernie-turbo-bf16",
   "law": "cleared",
   "law_detail": "ernie-image turbo (baidu) \u2014 Apache License 2.0",
   "sid": "foe-barnacle-shirt-ernie-image-turbo-bf16"
  },
  {
   "subject": "FOE \u00b7 Barnacle-Shirt",
   "row": "",
   "column": "ernie-image-turbo-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a humanoid figure entirely crusted in white-grey barnacles standing in shallow water beneath wharf timbers",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1313 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-barnacle-shirt-ernie-image-turbo-bf16-bare.webp",
   "tile": "img/foe-barnacle-shirt-ernie-image-turbo-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "ernie-image-turbo.safetensors",
   "arm_column": "ernie-image-turbo-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1313,
   "render_seconds": 1.44,
   "colour": {
    "mean_hue_deg": 62.9,
    "mean_saturation": 0.2985,
    "hue_spread_deg": 37.3,
    "resultant_R": 0.8087,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_barnacle_shirt__ernie-turbo__768__bare__s1313.jpg",
   "id": "foe-barnacle-shirt-ernie-image-turbo-bf16-bare",
   "archive_id": "foe_barnacle_shirt__ernie-turbo__768__bare__s1313",
   "cell_label": "",
   "at": "2026-08-23T17:37:41+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-ernie-turbo-bf16",
   "law": "cleared",
   "law_detail": "ernie-image turbo (baidu) \u2014 Apache License 2.0",
   "sid": "foe-barnacle-shirt-ernie-image-turbo-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Barnacle-Shirt",
   "row": "",
   "column": "kandinsky5-lite-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a humanoid figure entirely crusted in white-grey barnacles standing in shallow water beneath wharf timbers",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1313 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-barnacle-shirt-kandinsky5-lite-bf16.webp",
   "tile": "img/foe-barnacle-shirt-kandinsky5-lite-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "kandinsky5lite_t2i.safetensors",
   "arm_column": "kandinsky5-lite-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1313,
   "render_seconds": 6.19,
   "colour": {
    "mean_hue_deg": 32.4,
    "mean_saturation": 0.4063,
    "hue_spread_deg": 7.7,
    "resultant_R": 0.9911,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_barnacle_shirt__kandinsky5-lite__768__s1313.jpg",
   "id": "foe-barnacle-shirt-kandinsky5-lite-bf16",
   "archive_id": "foe_barnacle_shirt__kandinsky5-lite__768__s1313",
   "cell_label": "",
   "at": "2026-08-23T16:33:30+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/p2-kandinsky5-lite-bf16",
   "law": "cleared",
   "law_detail": "kandinsky 5.0 image lite \u2014 The MIT License (MIT)",
   "sid": "foe-barnacle-shirt-kandinsky5-lite-bf16"
  },
  {
   "subject": "FOE \u00b7 Barnacle-Shirt",
   "row": "",
   "column": "kandinsky5-lite-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a humanoid figure entirely crusted in white-grey barnacles standing in shallow water beneath wharf timbers",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1313 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-barnacle-shirt-kandinsky5-lite-bf16-bare.webp",
   "tile": "img/foe-barnacle-shirt-kandinsky5-lite-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "kandinsky5lite_t2i.safetensors",
   "arm_column": "kandinsky5-lite-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1313,
   "render_seconds": 6.18,
   "colour": {
    "mean_hue_deg": 201.5,
    "mean_saturation": 0.1823,
    "hue_spread_deg": 66.6,
    "resultant_R": 0.509,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_barnacle_shirt__kandinsky5-lite__768__bare__s1313.jpg",
   "id": "foe-barnacle-shirt-kandinsky5-lite-bf16-bare",
   "archive_id": "foe_barnacle_shirt__kandinsky5-lite__768__bare__s1313",
   "cell_label": "",
   "at": "2026-08-23T17:47:29+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/p2-kandinsky5-lite-bf16",
   "law": "cleared",
   "law_detail": "kandinsky 5.0 image lite \u2014 The MIT License (MIT)",
   "sid": "foe-barnacle-shirt-kandinsky5-lite-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Bell-Drowned",
   "row": "",
   "column": "z-image-turbo-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a drowned bell-ringer standing waist-deep in fen water gripping a rope that rises taut into darkness above",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1314 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-bell-drowned-z-image-turbo-bf16.webp",
   "tile": "img/foe-bell-drowned-z-image-turbo-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_turbo_bf16.safetensors",
   "arm_column": "z-image-turbo-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1314,
   "render_seconds": 1.22,
   "colour": {
    "mean_hue_deg": 28.9,
    "mean_saturation": 0.7035,
    "hue_spread_deg": 3.3,
    "resultant_R": 0.9984,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_bell_drowned__ctrl-z-image-turbo__768__s1314.jpg",
   "id": "foe-bell-drowned-z-image-turbo-bf16",
   "archive_id": "foe_bell_drowned__ctrl-z-image-turbo__768__s1314",
   "cell_label": "",
   "at": "2026-08-23T15:20:34+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/ctrl-z-image-turbo",
   "law": "cleared",
   "law_detail": "z-image turbo (bf16) \u2014 Apache-2.0",
   "sid": "foe-bell-drowned-z-image-turbo-bf16"
  },
  {
   "subject": "FOE \u00b7 Bell-Drowned",
   "row": "",
   "column": "z-image-turbo-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a drowned bell-ringer standing waist-deep in fen water gripping a rope that rises taut into darkness above",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1314 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-bell-drowned-z-image-turbo-bf16-bare.webp",
   "tile": "img/foe-bell-drowned-z-image-turbo-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_turbo_bf16.safetensors",
   "arm_column": "z-image-turbo-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1314,
   "render_seconds": 1.2,
   "colour": {
    "mean_hue_deg": 99.9,
    "mean_saturation": 0.2099,
    "hue_spread_deg": 61.8,
    "resultant_R": 0.5589,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_bell_drowned__ctrl-z-image-turbo__768__bare__s1314.jpg",
   "id": "foe-bell-drowned-z-image-turbo-bf16-bare",
   "archive_id": "foe_bell_drowned__ctrl-z-image-turbo__768__bare__s1314",
   "cell_label": "",
   "at": "2026-08-23T17:21:19+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/ctrl-z-image-turbo",
   "law": "cleared",
   "law_detail": "z-image turbo (bf16) \u2014 Apache-2.0",
   "sid": "foe-bell-drowned-z-image-turbo-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Bell-Drowned",
   "row": "",
   "column": "flux2-klein-4b-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a drowned bell-ringer standing waist-deep in fen water gripping a rope that rises taut into darkness above",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1314 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-bell-drowned-flux2-klein-4b-bf16.webp",
   "tile": "img/foe-bell-drowned-flux2-klein-4b-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "flux-2-klein-4b.safetensors",
   "arm_column": "flux2-klein-4b-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": null,
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1314,
   "render_seconds": 0.61,
   "colour": {
    "mean_hue_deg": 15.9,
    "mean_saturation": 0.3541,
    "hue_spread_deg": 36.3,
    "resultant_R": 0.8181,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_bell_drowned__flux2-klein-4b__768__s1314.jpg",
   "id": "foe-bell-drowned-flux2-klein-4b-bf16",
   "archive_id": "foe_bell_drowned__flux2-klein-4b__768__s1314",
   "cell_label": "",
   "at": "2026-08-23T15:22:31+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-klein4b-bf16",
   "law": "cleared",
   "law_detail": "flux.2 [klein] 4B \u2014 Apache License 2.0",
   "sid": "foe-bell-drowned-flux2-klein-4b-bf16"
  },
  {
   "subject": "FOE \u00b7 Bell-Drowned",
   "row": "",
   "column": "flux2-klein-4b-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a drowned bell-ringer standing waist-deep in fen water gripping a rope that rises taut into darkness above",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1314 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-bell-drowned-flux2-klein-4b-bf16-bare.webp",
   "tile": "img/foe-bell-drowned-flux2-klein-4b-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "flux-2-klein-4b.safetensors",
   "arm_column": "flux2-klein-4b-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": null,
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1314,
   "render_seconds": 0.61,
   "colour": {
    "mean_hue_deg": 218.5,
    "mean_saturation": 0.4334,
    "hue_spread_deg": 29.5,
    "resultant_R": 0.8761,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_bell_drowned__flux2-klein-4b__768__bare__s1314.jpg",
   "id": "foe-bell-drowned-flux2-klein-4b-bf16-bare",
   "archive_id": "foe_bell_drowned__flux2-klein-4b__768__bare__s1314",
   "cell_label": "",
   "at": "2026-08-23T17:22:06+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-klein4b-bf16",
   "law": "cleared",
   "law_detail": "flux.2 [klein] 4B \u2014 Apache License 2.0",
   "sid": "foe-bell-drowned-flux2-klein-4b-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Bell-Drowned",
   "row": "",
   "column": "z-image-base-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a drowned bell-ringer standing waist-deep in fen water gripping a rope that rises taut into darkness above",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1314 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-bell-drowned-z-image-base-bf16.webp",
   "tile": "img/foe-bell-drowned-z-image-base-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_bf16.safetensors",
   "arm_column": "z-image-base-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 4.0,
   "width": 768,
   "height": 768,
   "seed": 1314,
   "render_seconds": 7.92,
   "colour": {
    "mean_hue_deg": 38.5,
    "mean_saturation": 0.6002,
    "hue_spread_deg": 7.4,
    "resultant_R": 0.9918,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_bell_drowned__z-image-base__768__s1314.jpg",
   "id": "foe-bell-drowned-z-image-base-bf16",
   "archive_id": "foe_bell_drowned__z-image-base__768__s1314",
   "cell_label": "",
   "at": "2026-08-23T15:26:45+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-zimage-base-bf16",
   "law": "cleared",
   "law_detail": "z-image base (undistilled) \u2014 Apache-2.0",
   "sid": "foe-bell-drowned-z-image-base-bf16"
  },
  {
   "subject": "FOE \u00b7 Bell-Drowned",
   "row": "",
   "column": "z-image-base-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a drowned bell-ringer standing waist-deep in fen water gripping a rope that rises taut into darkness above",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1314 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-bell-drowned-z-image-base-bf16-bare.webp",
   "tile": "img/foe-bell-drowned-z-image-base-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_bf16.safetensors",
   "arm_column": "z-image-base-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 4.0,
   "width": 768,
   "height": 768,
   "seed": 1314,
   "render_seconds": 7.87,
   "colour": {
    "mean_hue_deg": 193.2,
    "mean_saturation": 0.601,
    "hue_spread_deg": 39.7,
    "resultant_R": 0.7866,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_bell_drowned__z-image-base__768__bare__s1314.jpg",
   "id": "foe-bell-drowned-z-image-base-bf16-bare",
   "archive_id": "foe_bell_drowned__z-image-base__768__bare__s1314",
   "cell_label": "",
   "at": "2026-08-23T17:24:33+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-zimage-base-bf16",
   "law": "cleared",
   "law_detail": "z-image base (undistilled) \u2014 Apache-2.0",
   "sid": "foe-bell-drowned-z-image-base-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Bell-Drowned",
   "row": "",
   "column": "hidream-o1-dev-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a drowned bell-ringer standing waist-deep in fen water gripping a rope that rises taut into darkness above",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1314 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-bell-drowned-hidream-o1-dev-fp8.webp",
   "tile": "img/foe-bell-drowned-hidream-o1-dev-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "hidream_o1_image_dev_fp8_scaled.safetensors",
   "arm_column": "hidream-o1-dev-fp8",
   "lora": [],
   "sampler": null,
   "scheduler": "normal",
   "steps": 32,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1314,
   "render_seconds": 2.46,
   "colour": {
    "mean_hue_deg": 22.8,
    "mean_saturation": 0.3632,
    "hue_spread_deg": 8.4,
    "resultant_R": 0.9893,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_bell_drowned__hidream-o1-dev__768__s1314.jpg",
   "id": "foe-bell-drowned-hidream-o1-dev-fp8",
   "archive_id": "foe_bell_drowned__hidream-o1-dev__768__s1314",
   "cell_label": "",
   "at": "2026-08-23T15:38:22+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-hidream-o1-dev-fp8",
   "law": "cleared",
   "law_detail": "hidream-o1-image-dev \u2014 MIT",
   "sid": "foe-bell-drowned-hidream-o1-dev-fp8"
  },
  {
   "subject": "FOE \u00b7 Bell-Drowned",
   "row": "",
   "column": "hidream-o1-dev-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a drowned bell-ringer standing waist-deep in fen water gripping a rope that rises taut into darkness above",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1314 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-bell-drowned-hidream-o1-dev-fp8-bare.webp",
   "tile": "img/foe-bell-drowned-hidream-o1-dev-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "hidream_o1_image_dev_fp8_scaled.safetensors",
   "arm_column": "hidream-o1-dev-fp8",
   "lora": [],
   "sampler": null,
   "scheduler": "normal",
   "steps": 32,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1314,
   "render_seconds": 2.53,
   "colour": {
    "mean_hue_deg": 182.2,
    "mean_saturation": 0.1191,
    "hue_spread_deg": 71.2,
    "resultant_R": 0.4623,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_bell_drowned__hidream-o1-dev__768__bare__s1314.jpg",
   "id": "foe-bell-drowned-hidream-o1-dev-fp8-bare",
   "archive_id": "foe_bell_drowned__hidream-o1-dev__768__bare__s1314",
   "cell_label": "",
   "at": "2026-08-23T17:27:56+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-hidream-o1-dev-fp8",
   "law": "cleared",
   "law_detail": "hidream-o1-image-dev \u2014 MIT",
   "sid": "foe-bell-drowned-hidream-o1-dev-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 Bell-Drowned",
   "row": "",
   "column": "chroma1-hd-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a drowned bell-ringer standing waist-deep in fen water gripping a rope that rises taut into darkness above",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1314 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-bell-drowned-chroma1-hd-fp8.webp",
   "tile": "img/foe-bell-drowned-chroma1-hd-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "Chroma1-HD-fp8mixed.safetensors",
   "arm_column": "chroma1-hd-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "beta",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1314,
   "render_seconds": 7.56,
   "colour": {
    "mean_hue_deg": 35.5,
    "mean_saturation": 0.7062,
    "hue_spread_deg": 3.4,
    "resultant_R": 0.9982,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_bell_drowned__chroma1-hd__768__s1314.jpg",
   "id": "foe-bell-drowned-chroma1-hd-fp8",
   "archive_id": "foe_bell_drowned__chroma1-hd__768__s1314",
   "cell_label": "",
   "at": "2026-08-23T15:45:41+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-chroma1-hd-fp8",
   "law": "cleared",
   "law_detail": "chroma1-hd (fp8mixed repack) \u2014 Apache-2.0",
   "sid": "foe-bell-drowned-chroma1-hd-fp8"
  },
  {
   "subject": "FOE \u00b7 Bell-Drowned",
   "row": "",
   "column": "chroma1-hd-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a drowned bell-ringer standing waist-deep in fen water gripping a rope that rises taut into darkness above",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1314 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-bell-drowned-chroma1-hd-fp8-bare.webp",
   "tile": "img/foe-bell-drowned-chroma1-hd-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "Chroma1-HD-fp8mixed.safetensors",
   "arm_column": "chroma1-hd-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "beta",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1314,
   "render_seconds": 7.86,
   "colour": {
    "mean_hue_deg": 49.5,
    "mean_saturation": 0.4531,
    "hue_spread_deg": 13.7,
    "resultant_R": 0.9719,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_bell_drowned__chroma1-hd__768__bare__s1314.jpg",
   "id": "foe-bell-drowned-chroma1-hd-fp8-bare",
   "archive_id": "foe_bell_drowned__chroma1-hd__768__bare__s1314",
   "cell_label": "",
   "at": "2026-08-23T17:31:18+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-chroma1-hd-fp8",
   "law": "cleared",
   "law_detail": "chroma1-hd (fp8mixed repack) \u2014 Apache-2.0",
   "sid": "foe-bell-drowned-chroma1-hd-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 Bell-Drowned",
   "row": "",
   "column": "krea2-turbo-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a drowned bell-ringer standing waist-deep in fen water gripping a rope that rises taut into darkness above",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1314 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-bell-drowned-krea2-turbo-fp8.webp",
   "tile": "img/foe-bell-drowned-krea2-turbo-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "krea2_turbo_fp8_scaled.safetensors",
   "arm_column": "krea2-turbo-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1314,
   "render_seconds": 2.08,
   "colour": {
    "mean_hue_deg": 30.6,
    "mean_saturation": 0.5063,
    "hue_spread_deg": 10.3,
    "resultant_R": 0.9839,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_bell_drowned__krea2-turbo__768__s1314.jpg",
   "id": "foe-bell-drowned-krea2-turbo-fp8",
   "archive_id": "foe_bell_drowned__krea2-turbo__768__s1314",
   "cell_label": "",
   "at": "2026-08-23T15:58:28+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-krea2-turbo-fp8",
   "law": "cleared",
   "law_detail": "krea 2 turbo (fp8_scaled) \u2014 Krea 2 Community License Agreement v.1",
   "sid": "foe-bell-drowned-krea2-turbo-fp8"
  },
  {
   "subject": "FOE \u00b7 Bell-Drowned",
   "row": "",
   "column": "krea2-turbo-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a drowned bell-ringer standing waist-deep in fen water gripping a rope that rises taut into darkness above",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1314 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-bell-drowned-krea2-turbo-fp8-bare.webp",
   "tile": "img/foe-bell-drowned-krea2-turbo-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "krea2_turbo_fp8_scaled.safetensors",
   "arm_column": "krea2-turbo-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1314,
   "render_seconds": 2.03,
   "colour": {
    "mean_hue_deg": 29.4,
    "mean_saturation": 0.2077,
    "hue_spread_deg": 47.0,
    "resultant_R": 0.7146,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_bell_drowned__krea2-turbo__768__bare__s1314.jpg",
   "id": "foe-bell-drowned-krea2-turbo-fp8-bare",
   "archive_id": "foe_bell_drowned__krea2-turbo__768__bare__s1314",
   "cell_label": "",
   "at": "2026-08-23T17:35:36+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-krea2-turbo-fp8",
   "law": "cleared",
   "law_detail": "krea 2 turbo (fp8_scaled) \u2014 Krea 2 Community License Agreement v.1",
   "sid": "foe-bell-drowned-krea2-turbo-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 Bell-Drowned",
   "row": "",
   "column": "mage-flow-turbo-int8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a drowned bell-ringer standing waist-deep in fen water gripping a rope that rises taut into darkness above",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1314 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-bell-drowned-mage-flow-turbo-int8.webp",
   "tile": "img/foe-bell-drowned-mage-flow-turbo-int8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "mage_flow_turbo_int8_convrot.safetensors",
   "arm_column": "mage-flow-turbo-int8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1314,
   "render_seconds": 0.78,
   "colour": {
    "mean_hue_deg": 28.3,
    "mean_saturation": 0.6755,
    "hue_spread_deg": 7.4,
    "resultant_R": 0.9916,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_bell_drowned__mageflow-turbo__768__s1314.jpg",
   "id": "foe-bell-drowned-mage-flow-turbo-int8",
   "archive_id": "foe_bell_drowned__mageflow-turbo__768__s1314",
   "cell_label": "",
   "at": "2026-08-23T16:01:38+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-mageflow-turbo-int8",
   "law": "cleared",
   "law_detail": "mage-flow 4B turbo (int8) \u2014 MIT License",
   "sid": "foe-bell-drowned-mage-flow-turbo-int8"
  },
  {
   "subject": "FOE \u00b7 Bell-Drowned",
   "row": "",
   "column": "mage-flow-turbo-int8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a drowned bell-ringer standing waist-deep in fen water gripping a rope that rises taut into darkness above",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1314 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-bell-drowned-mage-flow-turbo-int8-bare.webp",
   "tile": "img/foe-bell-drowned-mage-flow-turbo-int8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "mage_flow_turbo_int8_convrot.safetensors",
   "arm_column": "mage-flow-turbo-int8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1314,
   "render_seconds": 0.95,
   "colour": {
    "mean_hue_deg": 191.8,
    "mean_saturation": 0.4713,
    "hue_spread_deg": 34.9,
    "resultant_R": 0.8303,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_bell_drowned__mageflow-turbo__768__bare__s1314.jpg",
   "id": "foe-bell-drowned-mage-flow-turbo-int8-bare",
   "archive_id": "foe_bell_drowned__mageflow-turbo__768__bare__s1314",
   "cell_label": "",
   "at": "2026-08-23T17:36:51+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-mageflow-turbo-int8",
   "law": "cleared",
   "law_detail": "mage-flow 4B turbo (int8) \u2014 MIT License",
   "sid": "foe-bell-drowned-mage-flow-turbo-int8-bare"
  },
  {
   "subject": "FOE \u00b7 Bell-Drowned",
   "row": "",
   "column": "ernie-image-turbo-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a drowned bell-ringer standing waist-deep in fen water gripping a rope that rises taut into darkness above",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1314 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-bell-drowned-ernie-image-turbo-bf16.webp",
   "tile": "img/foe-bell-drowned-ernie-image-turbo-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "ernie-image-turbo.safetensors",
   "arm_column": "ernie-image-turbo-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1314,
   "render_seconds": 1.46,
   "colour": {
    "mean_hue_deg": 26.4,
    "mean_saturation": 0.5566,
    "hue_spread_deg": 14.0,
    "resultant_R": 0.9705,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_bell_drowned__ernie-turbo__768__s1314.jpg",
   "id": "foe-bell-drowned-ernie-image-turbo-bf16",
   "archive_id": "foe_bell_drowned__ernie-turbo__768__s1314",
   "cell_label": "",
   "at": "2026-08-23T16:03:30+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-ernie-turbo-bf16",
   "law": "cleared",
   "law_detail": "ernie-image turbo (baidu) \u2014 Apache License 2.0",
   "sid": "foe-bell-drowned-ernie-image-turbo-bf16"
  },
  {
   "subject": "FOE \u00b7 Bell-Drowned",
   "row": "",
   "column": "ernie-image-turbo-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a drowned bell-ringer standing waist-deep in fen water gripping a rope that rises taut into darkness above",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1314 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-bell-drowned-ernie-image-turbo-bf16-bare.webp",
   "tile": "img/foe-bell-drowned-ernie-image-turbo-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "ernie-image-turbo.safetensors",
   "arm_column": "ernie-image-turbo-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1314,
   "render_seconds": 1.44,
   "colour": {
    "mean_hue_deg": 196.7,
    "mean_saturation": 0.5573,
    "hue_spread_deg": 38.0,
    "resultant_R": 0.8023,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_bell_drowned__ernie-turbo__768__bare__s1314.jpg",
   "id": "foe-bell-drowned-ernie-image-turbo-bf16-bare",
   "archive_id": "foe_bell_drowned__ernie-turbo__768__bare__s1314",
   "cell_label": "",
   "at": "2026-08-23T17:37:46+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-ernie-turbo-bf16",
   "law": "cleared",
   "law_detail": "ernie-image turbo (baidu) \u2014 Apache License 2.0",
   "sid": "foe-bell-drowned-ernie-image-turbo-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Bell-Drowned",
   "row": "",
   "column": "kandinsky5-lite-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a drowned bell-ringer standing waist-deep in fen water gripping a rope that rises taut into darkness above",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1314 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-bell-drowned-kandinsky5-lite-bf16.webp",
   "tile": "img/foe-bell-drowned-kandinsky5-lite-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "kandinsky5lite_t2i.safetensors",
   "arm_column": "kandinsky5-lite-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1314,
   "render_seconds": 6.18,
   "colour": {
    "mean_hue_deg": 31.4,
    "mean_saturation": 0.7624,
    "hue_spread_deg": 4.5,
    "resultant_R": 0.9969,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_bell_drowned__kandinsky5-lite__768__s1314.jpg",
   "id": "foe-bell-drowned-kandinsky5-lite-bf16",
   "archive_id": "foe_bell_drowned__kandinsky5-lite__768__s1314",
   "cell_label": "",
   "at": "2026-08-23T16:33:49+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/p2-kandinsky5-lite-bf16",
   "law": "cleared",
   "law_detail": "kandinsky 5.0 image lite \u2014 The MIT License (MIT)",
   "sid": "foe-bell-drowned-kandinsky5-lite-bf16"
  },
  {
   "subject": "FOE \u00b7 Bell-Drowned",
   "row": "",
   "column": "kandinsky5-lite-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a drowned bell-ringer standing waist-deep in fen water gripping a rope that rises taut into darkness above",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1314 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-bell-drowned-kandinsky5-lite-bf16-bare.webp",
   "tile": "img/foe-bell-drowned-kandinsky5-lite-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "kandinsky5lite_t2i.safetensors",
   "arm_column": "kandinsky5-lite-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1314,
   "render_seconds": 6.18,
   "colour": {
    "mean_hue_deg": 97.2,
    "mean_saturation": 0.2625,
    "hue_spread_deg": 34.2,
    "resultant_R": 0.8364,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_bell_drowned__kandinsky5-lite__768__bare__s1314.jpg",
   "id": "foe-bell-drowned-kandinsky5-lite-bf16-bare",
   "archive_id": "foe_bell_drowned__kandinsky5-lite__768__bare__s1314",
   "cell_label": "",
   "at": "2026-08-23T17:47:48+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/p2-kandinsky5-lite-bf16",
   "law": "cleared",
   "law_detail": "kandinsky 5.0 image lite \u2014 The MIT License (MIT)",
   "sid": "foe-bell-drowned-kandinsky5-lite-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Stilt-Strider",
   "row": "",
   "column": "z-image-turbo-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall stilted figure of lashed poles striding through reeds in black marsh water, knees above the reed line",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1315 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-stilt-strider-z-image-turbo-bf16.webp",
   "tile": "img/foe-stilt-strider-z-image-turbo-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_turbo_bf16.safetensors",
   "arm_column": "z-image-turbo-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1315,
   "render_seconds": 1.22,
   "colour": {
    "mean_hue_deg": 30.1,
    "mean_saturation": 0.4827,
    "hue_spread_deg": 5.2,
    "resultant_R": 0.9959,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_stilt_strider__ctrl-z-image-turbo__768__s1315.jpg",
   "id": "foe-stilt-strider-z-image-turbo-bf16",
   "archive_id": "foe_stilt_strider__ctrl-z-image-turbo__768__s1315",
   "cell_label": "",
   "at": "2026-08-23T15:20:38+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/ctrl-z-image-turbo",
   "law": "cleared",
   "law_detail": "z-image turbo (bf16) \u2014 Apache-2.0",
   "sid": "foe-stilt-strider-z-image-turbo-bf16"
  },
  {
   "subject": "FOE \u00b7 Stilt-Strider",
   "row": "",
   "column": "z-image-turbo-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall stilted figure of lashed poles striding through reeds in black marsh water, knees above the reed line",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1315 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-stilt-strider-z-image-turbo-bf16-bare.webp",
   "tile": "img/foe-stilt-strider-z-image-turbo-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_turbo_bf16.safetensors",
   "arm_column": "z-image-turbo-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1315,
   "render_seconds": 1.2,
   "colour": {
    "mean_hue_deg": 25.2,
    "mean_saturation": 0.2189,
    "hue_spread_deg": 37.5,
    "resultant_R": 0.8069,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_stilt_strider__ctrl-z-image-turbo__768__bare__s1315.jpg",
   "id": "foe-stilt-strider-z-image-turbo-bf16-bare",
   "archive_id": "foe_stilt_strider__ctrl-z-image-turbo__768__bare__s1315",
   "cell_label": "",
   "at": "2026-08-23T17:21:26+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/ctrl-z-image-turbo",
   "law": "cleared",
   "law_detail": "z-image turbo (bf16) \u2014 Apache-2.0",
   "sid": "foe-stilt-strider-z-image-turbo-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Stilt-Strider",
   "row": "",
   "column": "flux2-klein-4b-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall stilted figure of lashed poles striding through reeds in black marsh water, knees above the reed line",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1315 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-stilt-strider-flux2-klein-4b-bf16.webp",
   "tile": "img/foe-stilt-strider-flux2-klein-4b-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "flux-2-klein-4b.safetensors",
   "arm_column": "flux2-klein-4b-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": null,
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1315,
   "render_seconds": 0.6,
   "colour": {
    "mean_hue_deg": 26.6,
    "mean_saturation": 0.3092,
    "hue_spread_deg": 31.0,
    "resultant_R": 0.8641,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_stilt_strider__flux2-klein-4b__768__s1315.jpg",
   "id": "foe-stilt-strider-flux2-klein-4b-bf16",
   "archive_id": "foe_stilt_strider__flux2-klein-4b__768__s1315",
   "cell_label": "",
   "at": "2026-08-23T15:22:33+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-klein4b-bf16",
   "law": "cleared",
   "law_detail": "flux.2 [klein] 4B \u2014 Apache License 2.0",
   "sid": "foe-stilt-strider-flux2-klein-4b-bf16"
  },
  {
   "subject": "FOE \u00b7 Stilt-Strider",
   "row": "",
   "column": "flux2-klein-4b-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall stilted figure of lashed poles striding through reeds in black marsh water, knees above the reed line",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1315 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-stilt-strider-flux2-klein-4b-bf16-bare.webp",
   "tile": "img/foe-stilt-strider-flux2-klein-4b-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "flux-2-klein-4b.safetensors",
   "arm_column": "flux2-klein-4b-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": null,
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1315,
   "render_seconds": 0.59,
   "colour": {
    "mean_hue_deg": 86.4,
    "mean_saturation": 0.0629,
    "hue_spread_deg": 65.5,
    "resultant_R": 0.5198,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_stilt_strider__flux2-klein-4b__768__bare__s1315.jpg",
   "id": "foe-stilt-strider-flux2-klein-4b-bf16-bare",
   "archive_id": "foe_stilt_strider__flux2-klein-4b__768__bare__s1315",
   "cell_label": "",
   "at": "2026-08-23T17:22:08+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-klein4b-bf16",
   "law": "cleared",
   "law_detail": "flux.2 [klein] 4B \u2014 Apache License 2.0",
   "sid": "foe-stilt-strider-flux2-klein-4b-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Stilt-Strider",
   "row": "",
   "column": "z-image-base-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall stilted figure of lashed poles striding through reeds in black marsh water, knees above the reed line",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1315 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-stilt-strider-z-image-base-bf16.webp",
   "tile": "img/foe-stilt-strider-z-image-base-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_bf16.safetensors",
   "arm_column": "z-image-base-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 4.0,
   "width": 768,
   "height": 768,
   "seed": 1315,
   "render_seconds": 7.92,
   "colour": {
    "mean_hue_deg": 35.8,
    "mean_saturation": 0.5166,
    "hue_spread_deg": 3.5,
    "resultant_R": 0.9981,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_stilt_strider__z-image-base__768__s1315.jpg",
   "id": "foe-stilt-strider-z-image-base-bf16",
   "archive_id": "foe_stilt_strider__z-image-base__768__s1315",
   "cell_label": "",
   "at": "2026-08-23T15:27:09+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-zimage-base-bf16",
   "law": "cleared",
   "law_detail": "z-image base (undistilled) \u2014 Apache-2.0",
   "sid": "foe-stilt-strider-z-image-base-bf16"
  },
  {
   "subject": "FOE \u00b7 Stilt-Strider",
   "row": "",
   "column": "z-image-base-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall stilted figure of lashed poles striding through reeds in black marsh water, knees above the reed line",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1315 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-stilt-strider-z-image-base-bf16-bare.webp",
   "tile": "img/foe-stilt-strider-z-image-base-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_bf16.safetensors",
   "arm_column": "z-image-base-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 4.0,
   "width": 768,
   "height": 768,
   "seed": 1315,
   "render_seconds": 7.89,
   "colour": {
    "mean_hue_deg": 50.4,
    "mean_saturation": 0.2185,
    "hue_spread_deg": 58.9,
    "resultant_R": 0.5897,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_stilt_strider__z-image-base__768__bare__s1315.jpg",
   "id": "foe-stilt-strider-z-image-base-bf16-bare",
   "archive_id": "foe_stilt_strider__z-image-base__768__bare__s1315",
   "cell_label": "",
   "at": "2026-08-23T17:24:58+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-zimage-base-bf16",
   "law": "cleared",
   "law_detail": "z-image base (undistilled) \u2014 Apache-2.0",
   "sid": "foe-stilt-strider-z-image-base-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Stilt-Strider",
   "row": "",
   "column": "hidream-o1-dev-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall stilted figure of lashed poles striding through reeds in black marsh water, knees above the reed line",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1315 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-stilt-strider-hidream-o1-dev-fp8.webp",
   "tile": "img/foe-stilt-strider-hidream-o1-dev-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "hidream_o1_image_dev_fp8_scaled.safetensors",
   "arm_column": "hidream-o1-dev-fp8",
   "lora": [],
   "sampler": null,
   "scheduler": "normal",
   "steps": 32,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1315,
   "render_seconds": 2.46,
   "colour": {
    "mean_hue_deg": 19.3,
    "mean_saturation": 0.3695,
    "hue_spread_deg": 22.7,
    "resultant_R": 0.9244,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_stilt_strider__hidream-o1-dev__768__s1315.jpg",
   "id": "foe-stilt-strider-hidream-o1-dev-fp8",
   "archive_id": "foe_stilt_strider__hidream-o1-dev__768__s1315",
   "cell_label": "",
   "at": "2026-08-23T15:38:30+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-hidream-o1-dev-fp8",
   "law": "cleared",
   "law_detail": "hidream-o1-image-dev \u2014 MIT",
   "sid": "foe-stilt-strider-hidream-o1-dev-fp8"
  },
  {
   "subject": "FOE \u00b7 Stilt-Strider",
   "row": "",
   "column": "hidream-o1-dev-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall stilted figure of lashed poles striding through reeds in black marsh water, knees above the reed line",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1315 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-stilt-strider-hidream-o1-dev-fp8-bare.webp",
   "tile": "img/foe-stilt-strider-hidream-o1-dev-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "hidream_o1_image_dev_fp8_scaled.safetensors",
   "arm_column": "hidream-o1-dev-fp8",
   "lora": [],
   "sampler": null,
   "scheduler": "normal",
   "steps": 32,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1315,
   "render_seconds": 2.51,
   "colour": {
    "mean_hue_deg": 40.9,
    "mean_saturation": 0.16,
    "hue_spread_deg": 57.9,
    "resultant_R": 0.5998,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_stilt_strider__hidream-o1-dev__768__bare__s1315.jpg",
   "id": "foe-stilt-strider-hidream-o1-dev-fp8-bare",
   "archive_id": "foe_stilt_strider__hidream-o1-dev__768__bare__s1315",
   "cell_label": "",
   "at": "2026-08-23T17:28:04+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-hidream-o1-dev-fp8",
   "law": "cleared",
   "law_detail": "hidream-o1-image-dev \u2014 MIT",
   "sid": "foe-stilt-strider-hidream-o1-dev-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 Stilt-Strider",
   "row": "",
   "column": "chroma1-hd-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall stilted figure of lashed poles striding through reeds in black marsh water, knees above the reed line",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1315 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-stilt-strider-chroma1-hd-fp8.webp",
   "tile": "img/foe-stilt-strider-chroma1-hd-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "Chroma1-HD-fp8mixed.safetensors",
   "arm_column": "chroma1-hd-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "beta",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1315,
   "render_seconds": 7.6,
   "colour": {
    "mean_hue_deg": 36.2,
    "mean_saturation": 0.5572,
    "hue_spread_deg": 4.9,
    "resultant_R": 0.9964,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_stilt_strider__chroma1-hd__768__s1315.jpg",
   "id": "foe-stilt-strider-chroma1-hd-fp8",
   "archive_id": "foe_stilt_strider__chroma1-hd__768__s1315",
   "cell_label": "",
   "at": "2026-08-23T15:46:04+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-chroma1-hd-fp8",
   "law": "cleared",
   "law_detail": "chroma1-hd (fp8mixed repack) \u2014 Apache-2.0",
   "sid": "foe-stilt-strider-chroma1-hd-fp8"
  },
  {
   "subject": "FOE \u00b7 Stilt-Strider",
   "row": "",
   "column": "chroma1-hd-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall stilted figure of lashed poles striding through reeds in black marsh water, knees above the reed line",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1315 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-stilt-strider-chroma1-hd-fp8-bare.webp",
   "tile": "img/foe-stilt-strider-chroma1-hd-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "Chroma1-HD-fp8mixed.safetensors",
   "arm_column": "chroma1-hd-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "beta",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1315,
   "render_seconds": 7.72,
   "colour": {
    "mean_hue_deg": 47.3,
    "mean_saturation": 0.2626,
    "hue_spread_deg": 8.6,
    "resultant_R": 0.9889,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_stilt_strider__chroma1-hd__768__bare__s1315.jpg",
   "id": "foe-stilt-strider-chroma1-hd-fp8-bare",
   "archive_id": "foe_stilt_strider__chroma1-hd__768__bare__s1315",
   "cell_label": "",
   "at": "2026-08-23T17:31:42+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-chroma1-hd-fp8",
   "law": "cleared",
   "law_detail": "chroma1-hd (fp8mixed repack) \u2014 Apache-2.0",
   "sid": "foe-stilt-strider-chroma1-hd-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 Stilt-Strider",
   "row": "",
   "column": "krea2-turbo-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall stilted figure of lashed poles striding through reeds in black marsh water, knees above the reed line",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1315 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-stilt-strider-krea2-turbo-fp8.webp",
   "tile": "img/foe-stilt-strider-krea2-turbo-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "krea2_turbo_fp8_scaled.safetensors",
   "arm_column": "krea2-turbo-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1315,
   "render_seconds": 2.09,
   "colour": {
    "mean_hue_deg": 28.2,
    "mean_saturation": 0.4151,
    "hue_spread_deg": 7.8,
    "resultant_R": 0.9909,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_stilt_strider__krea2-turbo__768__s1315.jpg",
   "id": "foe-stilt-strider-krea2-turbo-fp8",
   "archive_id": "foe_stilt_strider__krea2-turbo__768__s1315",
   "cell_label": "",
   "at": "2026-08-23T15:58:35+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-krea2-turbo-fp8",
   "law": "cleared",
   "law_detail": "krea 2 turbo (fp8_scaled) \u2014 Krea 2 Community License Agreement v.1",
   "sid": "foe-stilt-strider-krea2-turbo-fp8"
  },
  {
   "subject": "FOE \u00b7 Stilt-Strider",
   "row": "",
   "column": "krea2-turbo-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall stilted figure of lashed poles striding through reeds in black marsh water, knees above the reed line",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1315 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-stilt-strider-krea2-turbo-fp8-bare.webp",
   "tile": "img/foe-stilt-strider-krea2-turbo-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "krea2_turbo_fp8_scaled.safetensors",
   "arm_column": "krea2-turbo-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1315,
   "render_seconds": 2.04,
   "colour": {
    "mean_hue_deg": 37.5,
    "mean_saturation": 0.1181,
    "hue_spread_deg": 38.1,
    "resultant_R": 0.8014,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_stilt_strider__krea2-turbo__768__bare__s1315.jpg",
   "id": "foe-stilt-strider-krea2-turbo-fp8-bare",
   "archive_id": "foe_stilt_strider__krea2-turbo__768__bare__s1315",
   "cell_label": "",
   "at": "2026-08-23T17:35:43+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-krea2-turbo-fp8",
   "law": "cleared",
   "law_detail": "krea 2 turbo (fp8_scaled) \u2014 Krea 2 Community License Agreement v.1",
   "sid": "foe-stilt-strider-krea2-turbo-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 Stilt-Strider",
   "row": "",
   "column": "mage-flow-turbo-int8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall stilted figure of lashed poles striding through reeds in black marsh water, knees above the reed line",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1315 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-stilt-strider-mage-flow-turbo-int8.webp",
   "tile": "img/foe-stilt-strider-mage-flow-turbo-int8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "mage_flow_turbo_int8_convrot.safetensors",
   "arm_column": "mage-flow-turbo-int8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1315,
   "render_seconds": 0.78,
   "colour": {
    "mean_hue_deg": 34.7,
    "mean_saturation": 0.4895,
    "hue_spread_deg": 13.5,
    "resultant_R": 0.9726,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_stilt_strider__mageflow-turbo__768__s1315.jpg",
   "id": "foe-stilt-strider-mage-flow-turbo-int8",
   "archive_id": "foe_stilt_strider__mageflow-turbo__768__s1315",
   "cell_label": "",
   "at": "2026-08-23T16:01:40+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-mageflow-turbo-int8",
   "law": "cleared",
   "law_detail": "mage-flow 4B turbo (int8) \u2014 MIT License",
   "sid": "foe-stilt-strider-mage-flow-turbo-int8"
  },
  {
   "subject": "FOE \u00b7 Stilt-Strider",
   "row": "",
   "column": "mage-flow-turbo-int8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall stilted figure of lashed poles striding through reeds in black marsh water, knees above the reed line",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1315 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-stilt-strider-mage-flow-turbo-int8-bare.webp",
   "tile": "img/foe-stilt-strider-mage-flow-turbo-int8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "mage_flow_turbo_int8_convrot.safetensors",
   "arm_column": "mage-flow-turbo-int8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1315,
   "render_seconds": 0.82,
   "colour": {
    "mean_hue_deg": 91.5,
    "mean_saturation": 0.0032,
    "hue_spread_deg": 96.8,
    "resultant_R": 0.2399,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_stilt_strider__mageflow-turbo__768__bare__s1315.jpg",
   "id": "foe-stilt-strider-mage-flow-turbo-int8-bare",
   "archive_id": "foe_stilt_strider__mageflow-turbo__768__bare__s1315",
   "cell_label": "",
   "at": "2026-08-23T17:36:53+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-mageflow-turbo-int8",
   "law": "cleared",
   "law_detail": "mage-flow 4B turbo (int8) \u2014 MIT License",
   "sid": "foe-stilt-strider-mage-flow-turbo-int8-bare"
  },
  {
   "subject": "FOE \u00b7 Stilt-Strider",
   "row": "",
   "column": "ernie-image-turbo-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall stilted figure of lashed poles striding through reeds in black marsh water, knees above the reed line",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1315 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-stilt-strider-ernie-image-turbo-bf16.webp",
   "tile": "img/foe-stilt-strider-ernie-image-turbo-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "ernie-image-turbo.safetensors",
   "arm_column": "ernie-image-turbo-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1315,
   "render_seconds": 1.46,
   "colour": {
    "mean_hue_deg": 35.9,
    "mean_saturation": 0.505,
    "hue_spread_deg": 23.3,
    "resultant_R": 0.9207,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_stilt_strider__ernie-turbo__768__s1315.jpg",
   "id": "foe-stilt-strider-ernie-image-turbo-bf16",
   "archive_id": "foe_stilt_strider__ernie-turbo__768__s1315",
   "cell_label": "",
   "at": "2026-08-23T16:03:34+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-ernie-turbo-bf16",
   "law": "cleared",
   "law_detail": "ernie-image turbo (baidu) \u2014 Apache License 2.0",
   "sid": "foe-stilt-strider-ernie-image-turbo-bf16"
  },
  {
   "subject": "FOE \u00b7 Stilt-Strider",
   "row": "",
   "column": "ernie-image-turbo-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall stilted figure of lashed poles striding through reeds in black marsh water, knees above the reed line",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1315 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-stilt-strider-ernie-image-turbo-bf16-bare.webp",
   "tile": "img/foe-stilt-strider-ernie-image-turbo-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "ernie-image-turbo.safetensors",
   "arm_column": "ernie-image-turbo-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1315,
   "render_seconds": 1.44,
   "colour": {
    "mean_hue_deg": 149.3,
    "mean_saturation": 0.2782,
    "hue_spread_deg": 63.7,
    "resultant_R": 0.5391,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_stilt_strider__ernie-turbo__768__bare__s1315.jpg",
   "id": "foe-stilt-strider-ernie-image-turbo-bf16-bare",
   "archive_id": "foe_stilt_strider__ernie-turbo__768__bare__s1315",
   "cell_label": "",
   "at": "2026-08-23T17:37:51+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-ernie-turbo-bf16",
   "law": "cleared",
   "law_detail": "ernie-image turbo (baidu) \u2014 Apache License 2.0",
   "sid": "foe-stilt-strider-ernie-image-turbo-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Stilt-Strider",
   "row": "",
   "column": "kandinsky5-lite-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall stilted figure of lashed poles striding through reeds in black marsh water, knees above the reed line",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1315 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-stilt-strider-kandinsky5-lite-bf16.webp",
   "tile": "img/foe-stilt-strider-kandinsky5-lite-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "kandinsky5lite_t2i.safetensors",
   "arm_column": "kandinsky5-lite-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1315,
   "render_seconds": 6.19,
   "colour": {
    "mean_hue_deg": 34.3,
    "mean_saturation": 0.3785,
    "hue_spread_deg": 3.6,
    "resultant_R": 0.9981,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_stilt_strider__kandinsky5-lite__768__s1315.jpg",
   "id": "foe-stilt-strider-kandinsky5-lite-bf16",
   "archive_id": "foe_stilt_strider__kandinsky5-lite__768__s1315",
   "cell_label": "",
   "at": "2026-08-23T16:34:08+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/p2-kandinsky5-lite-bf16",
   "law": "cleared",
   "law_detail": "kandinsky 5.0 image lite \u2014 The MIT License (MIT)",
   "sid": "foe-stilt-strider-kandinsky5-lite-bf16"
  },
  {
   "subject": "FOE \u00b7 Stilt-Strider",
   "row": "",
   "column": "kandinsky5-lite-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall stilted figure of lashed poles striding through reeds in black marsh water, knees above the reed line",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1315 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-stilt-strider-kandinsky5-lite-bf16-bare.webp",
   "tile": "img/foe-stilt-strider-kandinsky5-lite-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "kandinsky5lite_t2i.safetensors",
   "arm_column": "kandinsky5-lite-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1315,
   "render_seconds": 6.17,
   "colour": {
    "mean_hue_deg": 32.0,
    "mean_saturation": 0.2405,
    "hue_spread_deg": 36.2,
    "resultant_R": 0.8194,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_stilt_strider__kandinsky5-lite__768__bare__s1315.jpg",
   "id": "foe-stilt-strider-kandinsky5-lite-bf16-bare",
   "archive_id": "foe_stilt_strider__kandinsky5-lite__768__bare__s1315",
   "cell_label": "",
   "at": "2026-08-23T17:48:10+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/p2-kandinsky5-lite-bf16",
   "law": "cleared",
   "law_detail": "kandinsky 5.0 image lite \u2014 The MIT License (MIT)",
   "sid": "foe-stilt-strider-kandinsky5-lite-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Lamp-Leech",
   "row": "",
   "column": "z-image-turbo-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a glistening black leech the length of an oar rearing from dark marsh water toward a raised lantern, reeds behind",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1316 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-lamp-leech-z-image-turbo-bf16.webp",
   "tile": "img/foe-lamp-leech-z-image-turbo-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_turbo_bf16.safetensors",
   "arm_column": "z-image-turbo-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1316,
   "render_seconds": 1.22,
   "colour": {
    "mean_hue_deg": 34.0,
    "mean_saturation": 0.5791,
    "hue_spread_deg": 19.7,
    "resultant_R": 0.9425,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_lamp_leech__ctrl-z-image-turbo__768__s1316.jpg",
   "id": "foe-lamp-leech-z-image-turbo-bf16",
   "archive_id": "foe_lamp_leech__ctrl-z-image-turbo__768__s1316",
   "cell_label": "",
   "at": "2026-08-23T15:20:42+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/ctrl-z-image-turbo",
   "law": "cleared",
   "law_detail": "z-image turbo (bf16) \u2014 Apache-2.0",
   "sid": "foe-lamp-leech-z-image-turbo-bf16"
  },
  {
   "subject": "FOE \u00b7 Lamp-Leech",
   "row": "",
   "column": "z-image-turbo-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a glistening black leech the length of an oar rearing from dark marsh water toward a raised lantern, reeds behind",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1316 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-lamp-leech-z-image-turbo-bf16-bare.webp",
   "tile": "img/foe-lamp-leech-z-image-turbo-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_turbo_bf16.safetensors",
   "arm_column": "z-image-turbo-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1316,
   "render_seconds": 1.21,
   "colour": {
    "mean_hue_deg": 72.0,
    "mean_saturation": 0.4067,
    "hue_spread_deg": 63.4,
    "resultant_R": 0.5421,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_lamp_leech__ctrl-z-image-turbo__768__bare__s1316.jpg",
   "id": "foe-lamp-leech-z-image-turbo-bf16-bare",
   "archive_id": "foe_lamp_leech__ctrl-z-image-turbo__768__bare__s1316",
   "cell_label": "",
   "at": "2026-08-23T17:21:29+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/ctrl-z-image-turbo",
   "law": "cleared",
   "law_detail": "z-image turbo (bf16) \u2014 Apache-2.0",
   "sid": "foe-lamp-leech-z-image-turbo-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Lamp-Leech",
   "row": "",
   "column": "flux2-klein-4b-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a glistening black leech the length of an oar rearing from dark marsh water toward a raised lantern, reeds behind",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1316 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-lamp-leech-flux2-klein-4b-bf16.webp",
   "tile": "img/foe-lamp-leech-flux2-klein-4b-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "flux-2-klein-4b.safetensors",
   "arm_column": "flux2-klein-4b-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": null,
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1316,
   "render_seconds": 0.62,
   "colour": {
    "mean_hue_deg": 29.7,
    "mean_saturation": 0.3537,
    "hue_spread_deg": 22.1,
    "resultant_R": 0.9282,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_lamp_leech__flux2-klein-4b__768__s1316.jpg",
   "id": "foe-lamp-leech-flux2-klein-4b-bf16",
   "archive_id": "foe_lamp_leech__flux2-klein-4b__768__s1316",
   "cell_label": "",
   "at": "2026-08-23T15:22:35+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-klein4b-bf16",
   "law": "cleared",
   "law_detail": "flux.2 [klein] 4B \u2014 Apache License 2.0",
   "sid": "foe-lamp-leech-flux2-klein-4b-bf16"
  },
  {
   "subject": "FOE \u00b7 Lamp-Leech",
   "row": "",
   "column": "flux2-klein-4b-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a glistening black leech the length of an oar rearing from dark marsh water toward a raised lantern, reeds behind",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1316 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-lamp-leech-flux2-klein-4b-bf16-bare.webp",
   "tile": "img/foe-lamp-leech-flux2-klein-4b-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "flux-2-klein-4b.safetensors",
   "arm_column": "flux2-klein-4b-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": null,
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1316,
   "render_seconds": 0.61,
   "colour": {
    "mean_hue_deg": 165.4,
    "mean_saturation": 0.4106,
    "hue_spread_deg": 67.6,
    "resultant_R": 0.4984,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_lamp_leech__flux2-klein-4b__768__bare__s1316.jpg",
   "id": "foe-lamp-leech-flux2-klein-4b-bf16-bare",
   "archive_id": "foe_lamp_leech__flux2-klein-4b__768__bare__s1316",
   "cell_label": "",
   "at": "2026-08-23T17:22:09+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-klein4b-bf16",
   "law": "cleared",
   "law_detail": "flux.2 [klein] 4B \u2014 Apache License 2.0",
   "sid": "foe-lamp-leech-flux2-klein-4b-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Lamp-Leech",
   "row": "",
   "column": "z-image-base-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a glistening black leech the length of an oar rearing from dark marsh water toward a raised lantern, reeds behind",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1316 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-lamp-leech-z-image-base-bf16.webp",
   "tile": "img/foe-lamp-leech-z-image-base-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_bf16.safetensors",
   "arm_column": "z-image-base-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 4.0,
   "width": 768,
   "height": 768,
   "seed": 1316,
   "render_seconds": 7.89,
   "colour": {
    "mean_hue_deg": 43.6,
    "mean_saturation": 0.4394,
    "hue_spread_deg": 15.4,
    "resultant_R": 0.9643,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_lamp_leech__z-image-base__768__s1316.jpg",
   "id": "foe-lamp-leech-z-image-base-bf16",
   "archive_id": "foe_lamp_leech__z-image-base__768__s1316",
   "cell_label": "",
   "at": "2026-08-23T15:27:33+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-zimage-base-bf16",
   "law": "cleared",
   "law_detail": "z-image base (undistilled) \u2014 Apache-2.0",
   "sid": "foe-lamp-leech-z-image-base-bf16"
  },
  {
   "subject": "FOE \u00b7 Lamp-Leech",
   "row": "",
   "column": "z-image-base-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a glistening black leech the length of an oar rearing from dark marsh water toward a raised lantern, reeds behind",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1316 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-lamp-leech-z-image-base-bf16-bare.webp",
   "tile": "img/foe-lamp-leech-z-image-base-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_bf16.safetensors",
   "arm_column": "z-image-base-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 4.0,
   "width": 768,
   "height": 768,
   "seed": 1316,
   "render_seconds": 7.91,
   "colour": {
    "mean_hue_deg": 63.2,
    "mean_saturation": 0.4676,
    "hue_spread_deg": 25.7,
    "resultant_R": 0.904,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_lamp_leech__z-image-base__768__bare__s1316.jpg",
   "id": "foe-lamp-leech-z-image-base-bf16-bare",
   "archive_id": "foe_lamp_leech__z-image-base__768__bare__s1316",
   "cell_label": "",
   "at": "2026-08-23T17:25:22+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-zimage-base-bf16",
   "law": "cleared",
   "law_detail": "z-image base (undistilled) \u2014 Apache-2.0",
   "sid": "foe-lamp-leech-z-image-base-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Lamp-Leech",
   "row": "",
   "column": "hidream-o1-dev-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a glistening black leech the length of an oar rearing from dark marsh water toward a raised lantern, reeds behind",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1316 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-lamp-leech-hidream-o1-dev-fp8.webp",
   "tile": "img/foe-lamp-leech-hidream-o1-dev-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "hidream_o1_image_dev_fp8_scaled.safetensors",
   "arm_column": "hidream-o1-dev-fp8",
   "lora": [],
   "sampler": null,
   "scheduler": "normal",
   "steps": 32,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1316,
   "render_seconds": 2.45,
   "colour": {
    "mean_hue_deg": 26.5,
    "mean_saturation": 0.4489,
    "hue_spread_deg": 12.2,
    "resultant_R": 0.9776,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_lamp_leech__hidream-o1-dev__768__s1316.jpg",
   "id": "foe-lamp-leech-hidream-o1-dev-fp8",
   "archive_id": "foe_lamp_leech__hidream-o1-dev__768__s1316",
   "cell_label": "",
   "at": "2026-08-23T15:38:37+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-hidream-o1-dev-fp8",
   "law": "cleared",
   "law_detail": "hidream-o1-image-dev \u2014 MIT",
   "sid": "foe-lamp-leech-hidream-o1-dev-fp8"
  },
  {
   "subject": "FOE \u00b7 Lamp-Leech",
   "row": "",
   "column": "hidream-o1-dev-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a glistening black leech the length of an oar rearing from dark marsh water toward a raised lantern, reeds behind",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1316 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-lamp-leech-hidream-o1-dev-fp8-bare.webp",
   "tile": "img/foe-lamp-leech-hidream-o1-dev-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "hidream_o1_image_dev_fp8_scaled.safetensors",
   "arm_column": "hidream-o1-dev-fp8",
   "lora": [],
   "sampler": null,
   "scheduler": "normal",
   "steps": 32,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1316,
   "render_seconds": 2.55,
   "colour": {
    "mean_hue_deg": 32.6,
    "mean_saturation": 0.2875,
    "hue_spread_deg": 22.8,
    "resultant_R": 0.9241,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_lamp_leech__hidream-o1-dev__768__bare__s1316.jpg",
   "id": "foe-lamp-leech-hidream-o1-dev-fp8-bare",
   "archive_id": "foe_lamp_leech__hidream-o1-dev__768__bare__s1316",
   "cell_label": "",
   "at": "2026-08-23T17:28:12+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-hidream-o1-dev-fp8",
   "law": "cleared",
   "law_detail": "hidream-o1-image-dev \u2014 MIT",
   "sid": "foe-lamp-leech-hidream-o1-dev-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 Lamp-Leech",
   "row": "",
   "column": "chroma1-hd-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a glistening black leech the length of an oar rearing from dark marsh water toward a raised lantern, reeds behind",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1316 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-lamp-leech-chroma1-hd-fp8.webp",
   "tile": "img/foe-lamp-leech-chroma1-hd-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "Chroma1-HD-fp8mixed.safetensors",
   "arm_column": "chroma1-hd-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "beta",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1316,
   "render_seconds": 7.63,
   "colour": {
    "mean_hue_deg": 42.7,
    "mean_saturation": 0.5425,
    "hue_spread_deg": 7.7,
    "resultant_R": 0.9911,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_lamp_leech__chroma1-hd__768__s1316.jpg",
   "id": "foe-lamp-leech-chroma1-hd-fp8",
   "archive_id": "foe_lamp_leech__chroma1-hd__768__s1316",
   "cell_label": "",
   "at": "2026-08-23T15:46:27+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-chroma1-hd-fp8",
   "law": "cleared",
   "law_detail": "chroma1-hd (fp8mixed repack) \u2014 Apache-2.0",
   "sid": "foe-lamp-leech-chroma1-hd-fp8"
  },
  {
   "subject": "FOE \u00b7 Lamp-Leech",
   "row": "",
   "column": "chroma1-hd-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a glistening black leech the length of an oar rearing from dark marsh water toward a raised lantern, reeds behind",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1316 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-lamp-leech-chroma1-hd-fp8-bare.webp",
   "tile": "img/foe-lamp-leech-chroma1-hd-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "Chroma1-HD-fp8mixed.safetensors",
   "arm_column": "chroma1-hd-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "beta",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1316,
   "render_seconds": 7.68,
   "colour": {
    "mean_hue_deg": 144.8,
    "mean_saturation": 0.3847,
    "hue_spread_deg": 34.4,
    "resultant_R": 0.835,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_lamp_leech__chroma1-hd__768__bare__s1316.jpg",
   "id": "foe-lamp-leech-chroma1-hd-fp8-bare",
   "archive_id": "foe_lamp_leech__chroma1-hd__768__bare__s1316",
   "cell_label": "",
   "at": "2026-08-23T17:32:06+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-chroma1-hd-fp8",
   "law": "cleared",
   "law_detail": "chroma1-hd (fp8mixed repack) \u2014 Apache-2.0",
   "sid": "foe-lamp-leech-chroma1-hd-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 Lamp-Leech",
   "row": "",
   "column": "krea2-turbo-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a glistening black leech the length of an oar rearing from dark marsh water toward a raised lantern, reeds behind",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1316 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-lamp-leech-krea2-turbo-fp8.webp",
   "tile": "img/foe-lamp-leech-krea2-turbo-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "krea2_turbo_fp8_scaled.safetensors",
   "arm_column": "krea2-turbo-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1316,
   "render_seconds": 2.08,
   "colour": {
    "mean_hue_deg": 26.2,
    "mean_saturation": 0.4742,
    "hue_spread_deg": 11.7,
    "resultant_R": 0.9794,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_lamp_leech__krea2-turbo__768__s1316.jpg",
   "id": "foe-lamp-leech-krea2-turbo-fp8",
   "archive_id": "foe_lamp_leech__krea2-turbo__768__s1316",
   "cell_label": "",
   "at": "2026-08-23T15:58:41+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-krea2-turbo-fp8",
   "law": "cleared",
   "law_detail": "krea 2 turbo (fp8_scaled) \u2014 Krea 2 Community License Agreement v.1",
   "sid": "foe-lamp-leech-krea2-turbo-fp8"
  },
  {
   "subject": "FOE \u00b7 Lamp-Leech",
   "row": "",
   "column": "krea2-turbo-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a glistening black leech the length of an oar rearing from dark marsh water toward a raised lantern, reeds behind",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1316 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-lamp-leech-krea2-turbo-fp8-bare.webp",
   "tile": "img/foe-lamp-leech-krea2-turbo-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "krea2_turbo_fp8_scaled.safetensors",
   "arm_column": "krea2-turbo-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1316,
   "render_seconds": 2.05,
   "colour": {
    "mean_hue_deg": 52.4,
    "mean_saturation": 0.4178,
    "hue_spread_deg": 37.1,
    "resultant_R": 0.8111,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_lamp_leech__krea2-turbo__768__bare__s1316.jpg",
   "id": "foe-lamp-leech-krea2-turbo-fp8-bare",
   "archive_id": "foe_lamp_leech__krea2-turbo__768__bare__s1316",
   "cell_label": "",
   "at": "2026-08-23T17:35:49+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-krea2-turbo-fp8",
   "law": "cleared",
   "law_detail": "krea 2 turbo (fp8_scaled) \u2014 Krea 2 Community License Agreement v.1",
   "sid": "foe-lamp-leech-krea2-turbo-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 Lamp-Leech",
   "row": "",
   "column": "mage-flow-turbo-int8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a glistening black leech the length of an oar rearing from dark marsh water toward a raised lantern, reeds behind",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1316 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-lamp-leech-mage-flow-turbo-int8.webp",
   "tile": "img/foe-lamp-leech-mage-flow-turbo-int8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "mage_flow_turbo_int8_convrot.safetensors",
   "arm_column": "mage-flow-turbo-int8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1316,
   "render_seconds": 0.78,
   "colour": {
    "mean_hue_deg": 32.6,
    "mean_saturation": 0.6454,
    "hue_spread_deg": 9.8,
    "resultant_R": 0.9855,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_lamp_leech__mageflow-turbo__768__s1316.jpg",
   "id": "foe-lamp-leech-mage-flow-turbo-int8",
   "archive_id": "foe_lamp_leech__mageflow-turbo__768__s1316",
   "cell_label": "",
   "at": "2026-08-23T16:01:42+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-mageflow-turbo-int8",
   "law": "cleared",
   "law_detail": "mage-flow 4B turbo (int8) \u2014 MIT License",
   "sid": "foe-lamp-leech-mage-flow-turbo-int8"
  },
  {
   "subject": "FOE \u00b7 Lamp-Leech",
   "row": "",
   "column": "mage-flow-turbo-int8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a glistening black leech the length of an oar rearing from dark marsh water toward a raised lantern, reeds behind",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1316 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-lamp-leech-mage-flow-turbo-int8-bare.webp",
   "tile": "img/foe-lamp-leech-mage-flow-turbo-int8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "mage_flow_turbo_int8_convrot.safetensors",
   "arm_column": "mage-flow-turbo-int8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1316,
   "render_seconds": 0.9,
   "colour": {
    "mean_hue_deg": 119.1,
    "mean_saturation": 0.3321,
    "hue_spread_deg": 79.7,
    "resultant_R": 0.38,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_lamp_leech__mageflow-turbo__768__bare__s1316.jpg",
   "id": "foe-lamp-leech-mage-flow-turbo-int8-bare",
   "archive_id": "foe_lamp_leech__mageflow-turbo__768__bare__s1316",
   "cell_label": "",
   "at": "2026-08-23T17:36:56+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-mageflow-turbo-int8",
   "law": "cleared",
   "law_detail": "mage-flow 4B turbo (int8) \u2014 MIT License",
   "sid": "foe-lamp-leech-mage-flow-turbo-int8-bare"
  },
  {
   "subject": "FOE \u00b7 Lamp-Leech",
   "row": "",
   "column": "ernie-image-turbo-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a glistening black leech the length of an oar rearing from dark marsh water toward a raised lantern, reeds behind",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1316 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-lamp-leech-ernie-image-turbo-bf16.webp",
   "tile": "img/foe-lamp-leech-ernie-image-turbo-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "ernie-image-turbo.safetensors",
   "arm_column": "ernie-image-turbo-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1316,
   "render_seconds": 1.46,
   "colour": {
    "mean_hue_deg": 32.5,
    "mean_saturation": 0.5366,
    "hue_spread_deg": 10.2,
    "resultant_R": 0.9844,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_lamp_leech__ernie-turbo__768__s1316.jpg",
   "id": "foe-lamp-leech-ernie-image-turbo-bf16",
   "archive_id": "foe_lamp_leech__ernie-turbo__768__s1316",
   "cell_label": "",
   "at": "2026-08-23T16:03:39+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-ernie-turbo-bf16",
   "law": "cleared",
   "law_detail": "ernie-image turbo (baidu) \u2014 Apache License 2.0",
   "sid": "foe-lamp-leech-ernie-image-turbo-bf16"
  },
  {
   "subject": "FOE \u00b7 Lamp-Leech",
   "row": "",
   "column": "ernie-image-turbo-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a glistening black leech the length of an oar rearing from dark marsh water toward a raised lantern, reeds behind",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1316 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-lamp-leech-ernie-image-turbo-bf16-bare.webp",
   "tile": "img/foe-lamp-leech-ernie-image-turbo-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "ernie-image-turbo.safetensors",
   "arm_column": "ernie-image-turbo-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1316,
   "render_seconds": 1.45,
   "colour": {
    "mean_hue_deg": 64.3,
    "mean_saturation": 0.5131,
    "hue_spread_deg": 48.9,
    "resultant_R": 0.695,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_lamp_leech__ernie-turbo__768__bare__s1316.jpg",
   "id": "foe-lamp-leech-ernie-image-turbo-bf16-bare",
   "archive_id": "foe_lamp_leech__ernie-turbo__768__bare__s1316",
   "cell_label": "",
   "at": "2026-08-23T17:37:56+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-ernie-turbo-bf16",
   "law": "cleared",
   "law_detail": "ernie-image turbo (baidu) \u2014 Apache License 2.0",
   "sid": "foe-lamp-leech-ernie-image-turbo-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 Lamp-Leech",
   "row": "",
   "column": "kandinsky5-lite-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a glistening black leech the length of an oar rearing from dark marsh water toward a raised lantern, reeds behind",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1316 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-lamp-leech-kandinsky5-lite-bf16.webp",
   "tile": "img/foe-lamp-leech-kandinsky5-lite-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "kandinsky5lite_t2i.safetensors",
   "arm_column": "kandinsky5-lite-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1316,
   "render_seconds": 6.26,
   "colour": {
    "mean_hue_deg": 39.0,
    "mean_saturation": 0.8169,
    "hue_spread_deg": 7.1,
    "resultant_R": 0.9924,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_lamp_leech__kandinsky5-lite__768__s1316.jpg",
   "id": "foe-lamp-leech-kandinsky5-lite-bf16",
   "archive_id": "foe_lamp_leech__kandinsky5-lite__768__s1316",
   "cell_label": "",
   "at": "2026-08-23T16:34:27+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/p2-kandinsky5-lite-bf16",
   "law": "cleared",
   "law_detail": "kandinsky 5.0 image lite \u2014 The MIT License (MIT)",
   "sid": "foe-lamp-leech-kandinsky5-lite-bf16"
  },
  {
   "subject": "FOE \u00b7 Lamp-Leech",
   "row": "",
   "column": "kandinsky5-lite-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a glistening black leech the length of an oar rearing from dark marsh water toward a raised lantern, reeds behind",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1316 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-lamp-leech-kandinsky5-lite-bf16-bare.webp",
   "tile": "img/foe-lamp-leech-kandinsky5-lite-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "kandinsky5lite_t2i.safetensors",
   "arm_column": "kandinsky5-lite-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1316,
   "render_seconds": 6.17,
   "colour": {
    "mean_hue_deg": 85.3,
    "mean_saturation": 0.3709,
    "hue_spread_deg": 40.5,
    "resultant_R": 0.7791,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_lamp_leech__kandinsky5-lite__768__bare__s1316.jpg",
   "id": "foe-lamp-leech-kandinsky5-lite-bf16-bare",
   "archive_id": "foe_lamp_leech__kandinsky5-lite__768__bare__s1316",
   "cell_label": "",
   "at": "2026-08-23T17:48:30+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/p2-kandinsky5-lite-bf16",
   "law": "cleared",
   "law_detail": "kandinsky 5.0 image lite \u2014 The MIT License (MIT)",
   "sid": "foe-lamp-leech-kandinsky5-lite-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 The Tithe-Bird",
   "row": "",
   "column": "z-image-turbo-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast storm-grey seabird mantling over an iron beacon cradle on a basalt summit, wingspan spilling past the frame, one lamp-pale eye catching the light",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1317 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-tithe-bird-z-image-turbo-bf16.webp",
   "tile": "img/foe-the-tithe-bird-z-image-turbo-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_turbo_bf16.safetensors",
   "arm_column": "z-image-turbo-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1317,
   "render_seconds": 1.21,
   "colour": {
    "mean_hue_deg": 9.4,
    "mean_saturation": 0.1254,
    "hue_spread_deg": 132.3,
    "resultant_R": 0.0696,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_tithe_bird__ctrl-z-image-turbo__768__s1317.jpg",
   "id": "foe-the-tithe-bird-z-image-turbo-bf16",
   "archive_id": "foe_the_tithe_bird__ctrl-z-image-turbo__768__s1317",
   "cell_label": "",
   "at": "2026-08-23T15:20:46+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/ctrl-z-image-turbo",
   "law": "cleared",
   "law_detail": "z-image turbo (bf16) \u2014 Apache-2.0",
   "sid": "foe-the-tithe-bird-z-image-turbo-bf16"
  },
  {
   "subject": "FOE \u00b7 The Tithe-Bird",
   "row": "",
   "column": "z-image-turbo-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast storm-grey seabird mantling over an iron beacon cradle on a basalt summit, wingspan spilling past the frame, one lamp-pale eye catching the light",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1317 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-tithe-bird-z-image-turbo-bf16-bare.webp",
   "tile": "img/foe-the-tithe-bird-z-image-turbo-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_turbo_bf16.safetensors",
   "arm_column": "z-image-turbo-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1317,
   "render_seconds": 1.21,
   "colour": {
    "mean_hue_deg": 207.5,
    "mean_saturation": 0.1432,
    "hue_spread_deg": 65.1,
    "resultant_R": 0.5246,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_tithe_bird__ctrl-z-image-turbo__768__bare__s1317.jpg",
   "id": "foe-the-tithe-bird-z-image-turbo-bf16-bare",
   "archive_id": "foe_the_tithe_bird__ctrl-z-image-turbo__768__bare__s1317",
   "cell_label": "",
   "at": "2026-08-23T17:21:33+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/ctrl-z-image-turbo",
   "law": "cleared",
   "law_detail": "z-image turbo (bf16) \u2014 Apache-2.0",
   "sid": "foe-the-tithe-bird-z-image-turbo-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 The Tithe-Bird",
   "row": "",
   "column": "flux2-klein-4b-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast storm-grey seabird mantling over an iron beacon cradle on a basalt summit, wingspan spilling past the frame, one lamp-pale eye catching the light",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1317 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-tithe-bird-flux2-klein-4b-bf16.webp",
   "tile": "img/foe-the-tithe-bird-flux2-klein-4b-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "flux-2-klein-4b.safetensors",
   "arm_column": "flux2-klein-4b-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": null,
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1317,
   "render_seconds": 0.6,
   "colour": {
    "mean_hue_deg": 25.5,
    "mean_saturation": 0.2485,
    "hue_spread_deg": 28.7,
    "resultant_R": 0.882,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_tithe_bird__flux2-klein-4b__768__s1317.jpg",
   "id": "foe-the-tithe-bird-flux2-klein-4b-bf16",
   "archive_id": "foe_the_tithe_bird__flux2-klein-4b__768__s1317",
   "cell_label": "",
   "at": "2026-08-23T15:22:36+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-klein4b-bf16",
   "law": "cleared",
   "law_detail": "flux.2 [klein] 4B \u2014 Apache License 2.0",
   "sid": "foe-the-tithe-bird-flux2-klein-4b-bf16"
  },
  {
   "subject": "FOE \u00b7 The Tithe-Bird",
   "row": "",
   "column": "flux2-klein-4b-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast storm-grey seabird mantling over an iron beacon cradle on a basalt summit, wingspan spilling past the frame, one lamp-pale eye catching the light",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1317 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-tithe-bird-flux2-klein-4b-bf16-bare.webp",
   "tile": "img/foe-the-tithe-bird-flux2-klein-4b-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "flux-2-klein-4b.safetensors",
   "arm_column": "flux2-klein-4b-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": null,
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1317,
   "render_seconds": 0.61,
   "colour": {
    "mean_hue_deg": 212.7,
    "mean_saturation": 0.2471,
    "hue_spread_deg": 22.6,
    "resultant_R": 0.9251,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_tithe_bird__flux2-klein-4b__768__bare__s1317.jpg",
   "id": "foe-the-tithe-bird-flux2-klein-4b-bf16-bare",
   "archive_id": "foe_the_tithe_bird__flux2-klein-4b__768__bare__s1317",
   "cell_label": "",
   "at": "2026-08-23T17:22:12+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-klein4b-bf16",
   "law": "cleared",
   "law_detail": "flux.2 [klein] 4B \u2014 Apache License 2.0",
   "sid": "foe-the-tithe-bird-flux2-klein-4b-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 The Tithe-Bird",
   "row": "",
   "column": "z-image-base-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast storm-grey seabird mantling over an iron beacon cradle on a basalt summit, wingspan spilling past the frame, one lamp-pale eye catching the light",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1317 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-tithe-bird-z-image-base-bf16.webp",
   "tile": "img/foe-the-tithe-bird-z-image-base-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_bf16.safetensors",
   "arm_column": "z-image-base-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 4.0,
   "width": 768,
   "height": 768,
   "seed": 1317,
   "render_seconds": 7.88,
   "colour": {
    "mean_hue_deg": 33.6,
    "mean_saturation": 0.3463,
    "hue_spread_deg": 8.7,
    "resultant_R": 0.9887,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_tithe_bird__z-image-base__768__s1317.jpg",
   "id": "foe-the-tithe-bird-z-image-base-bf16",
   "archive_id": "foe_the_tithe_bird__z-image-base__768__s1317",
   "cell_label": "",
   "at": "2026-08-23T15:27:57+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-zimage-base-bf16",
   "law": "cleared",
   "law_detail": "z-image base (undistilled) \u2014 Apache-2.0",
   "sid": "foe-the-tithe-bird-z-image-base-bf16"
  },
  {
   "subject": "FOE \u00b7 The Tithe-Bird",
   "row": "",
   "column": "z-image-base-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast storm-grey seabird mantling over an iron beacon cradle on a basalt summit, wingspan spilling past the frame, one lamp-pale eye catching the light",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1317 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-tithe-bird-z-image-base-bf16-bare.webp",
   "tile": "img/foe-the-tithe-bird-z-image-base-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_bf16.safetensors",
   "arm_column": "z-image-base-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 4.0,
   "width": 768,
   "height": 768,
   "seed": 1317,
   "render_seconds": 7.92,
   "colour": {
    "mean_hue_deg": 220.5,
    "mean_saturation": 0.167,
    "hue_spread_deg": 29.9,
    "resultant_R": 0.8724,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_tithe_bird__z-image-base__768__bare__s1317.jpg",
   "id": "foe-the-tithe-bird-z-image-base-bf16-bare",
   "archive_id": "foe_the_tithe_bird__z-image-base__768__bare__s1317",
   "cell_label": "",
   "at": "2026-08-23T17:25:46+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-zimage-base-bf16",
   "law": "cleared",
   "law_detail": "z-image base (undistilled) \u2014 Apache-2.0",
   "sid": "foe-the-tithe-bird-z-image-base-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 The Tithe-Bird",
   "row": "",
   "column": "hidream-o1-dev-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast storm-grey seabird mantling over an iron beacon cradle on a basalt summit, wingspan spilling past the frame, one lamp-pale eye catching the light",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1317 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-tithe-bird-hidream-o1-dev-fp8.webp",
   "tile": "img/foe-the-tithe-bird-hidream-o1-dev-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "hidream_o1_image_dev_fp8_scaled.safetensors",
   "arm_column": "hidream-o1-dev-fp8",
   "lora": [],
   "sampler": null,
   "scheduler": "normal",
   "steps": 32,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1317,
   "render_seconds": 2.46,
   "colour": {
    "mean_hue_deg": 3.2,
    "mean_saturation": 0.1541,
    "hue_spread_deg": 73.4,
    "resultant_R": 0.4397,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_tithe_bird__hidream-o1-dev__768__s1317.jpg",
   "id": "foe-the-tithe-bird-hidream-o1-dev-fp8",
   "archive_id": "foe_the_tithe_bird__hidream-o1-dev__768__s1317",
   "cell_label": "",
   "at": "2026-08-23T15:38:45+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-hidream-o1-dev-fp8",
   "law": "cleared",
   "law_detail": "hidream-o1-image-dev \u2014 MIT",
   "sid": "foe-the-tithe-bird-hidream-o1-dev-fp8"
  },
  {
   "subject": "FOE \u00b7 The Tithe-Bird",
   "row": "",
   "column": "hidream-o1-dev-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast storm-grey seabird mantling over an iron beacon cradle on a basalt summit, wingspan spilling past the frame, one lamp-pale eye catching the light",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1317 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-tithe-bird-hidream-o1-dev-fp8-bare.webp",
   "tile": "img/foe-the-tithe-bird-hidream-o1-dev-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "hidream_o1_image_dev_fp8_scaled.safetensors",
   "arm_column": "hidream-o1-dev-fp8",
   "lora": [],
   "sampler": null,
   "scheduler": "normal",
   "steps": 32,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1317,
   "render_seconds": 2.53,
   "colour": {
    "mean_hue_deg": 353.0,
    "mean_saturation": 0.201,
    "hue_spread_deg": 82.5,
    "resultant_R": 0.3543,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_tithe_bird__hidream-o1-dev__768__bare__s1317.jpg",
   "id": "foe-the-tithe-bird-hidream-o1-dev-fp8-bare",
   "archive_id": "foe_the_tithe_bird__hidream-o1-dev__768__bare__s1317",
   "cell_label": "",
   "at": "2026-08-23T17:28:20+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-hidream-o1-dev-fp8",
   "law": "cleared",
   "law_detail": "hidream-o1-image-dev \u2014 MIT",
   "sid": "foe-the-tithe-bird-hidream-o1-dev-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 The Tithe-Bird",
   "row": "",
   "column": "chroma1-hd-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast storm-grey seabird mantling over an iron beacon cradle on a basalt summit, wingspan spilling past the frame, one lamp-pale eye catching the light",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1317 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-tithe-bird-chroma1-hd-fp8.webp",
   "tile": "img/foe-the-tithe-bird-chroma1-hd-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "Chroma1-HD-fp8mixed.safetensors",
   "arm_column": "chroma1-hd-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "beta",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1317,
   "render_seconds": 7.63,
   "colour": {
    "mean_hue_deg": 35.7,
    "mean_saturation": 0.5801,
    "hue_spread_deg": 4.9,
    "resultant_R": 0.9964,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_tithe_bird__chroma1-hd__768__s1317.jpg",
   "id": "foe-the-tithe-bird-chroma1-hd-fp8",
   "archive_id": "foe_the_tithe_bird__chroma1-hd__768__s1317",
   "cell_label": "",
   "at": "2026-08-23T15:46:50+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-chroma1-hd-fp8",
   "law": "cleared",
   "law_detail": "chroma1-hd (fp8mixed repack) \u2014 Apache-2.0",
   "sid": "foe-the-tithe-bird-chroma1-hd-fp8"
  },
  {
   "subject": "FOE \u00b7 The Tithe-Bird",
   "row": "",
   "column": "chroma1-hd-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast storm-grey seabird mantling over an iron beacon cradle on a basalt summit, wingspan spilling past the frame, one lamp-pale eye catching the light",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1317 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-tithe-bird-chroma1-hd-fp8-bare.webp",
   "tile": "img/foe-the-tithe-bird-chroma1-hd-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "Chroma1-HD-fp8mixed.safetensors",
   "arm_column": "chroma1-hd-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "beta",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1317,
   "render_seconds": 7.91,
   "colour": {
    "mean_hue_deg": 194.2,
    "mean_saturation": 0.3707,
    "hue_spread_deg": 10.8,
    "resultant_R": 0.9824,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_tithe_bird__chroma1-hd__768__bare__s1317.jpg",
   "id": "foe-the-tithe-bird-chroma1-hd-fp8-bare",
   "archive_id": "foe_the_tithe_bird__chroma1-hd__768__bare__s1317",
   "cell_label": "",
   "at": "2026-08-23T17:32:31+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-chroma1-hd-fp8",
   "law": "cleared",
   "law_detail": "chroma1-hd (fp8mixed repack) \u2014 Apache-2.0",
   "sid": "foe-the-tithe-bird-chroma1-hd-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 The Tithe-Bird",
   "row": "",
   "column": "krea2-turbo-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast storm-grey seabird mantling over an iron beacon cradle on a basalt summit, wingspan spilling past the frame, one lamp-pale eye catching the light",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1317 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-tithe-bird-krea2-turbo-fp8.webp",
   "tile": "img/foe-the-tithe-bird-krea2-turbo-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "krea2_turbo_fp8_scaled.safetensors",
   "arm_column": "krea2-turbo-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1317,
   "render_seconds": 2.09,
   "colour": {
    "mean_hue_deg": 28.5,
    "mean_saturation": 0.3545,
    "hue_spread_deg": 12.1,
    "resultant_R": 0.9779,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_tithe_bird__krea2-turbo__768__s1317.jpg",
   "id": "foe-the-tithe-bird-krea2-turbo-fp8",
   "archive_id": "foe_the_tithe_bird__krea2-turbo__768__s1317",
   "cell_label": "",
   "at": "2026-08-23T15:58:47+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-krea2-turbo-fp8",
   "law": "cleared",
   "law_detail": "krea 2 turbo (fp8_scaled) \u2014 Krea 2 Community License Agreement v.1",
   "sid": "foe-the-tithe-bird-krea2-turbo-fp8"
  },
  {
   "subject": "FOE \u00b7 The Tithe-Bird",
   "row": "",
   "column": "krea2-turbo-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast storm-grey seabird mantling over an iron beacon cradle on a basalt summit, wingspan spilling past the frame, one lamp-pale eye catching the light",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1317 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-tithe-bird-krea2-turbo-fp8-bare.webp",
   "tile": "img/foe-the-tithe-bird-krea2-turbo-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "krea2_turbo_fp8_scaled.safetensors",
   "arm_column": "krea2-turbo-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1317,
   "render_seconds": 2.05,
   "colour": {
    "mean_hue_deg": 224.2,
    "mean_saturation": 0.0767,
    "hue_spread_deg": 44.8,
    "resultant_R": 0.7371,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_tithe_bird__krea2-turbo__768__bare__s1317.jpg",
   "id": "foe-the-tithe-bird-krea2-turbo-fp8-bare",
   "archive_id": "foe_the_tithe_bird__krea2-turbo__768__bare__s1317",
   "cell_label": "",
   "at": "2026-08-23T17:35:55+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-krea2-turbo-fp8",
   "law": "cleared",
   "law_detail": "krea 2 turbo (fp8_scaled) \u2014 Krea 2 Community License Agreement v.1",
   "sid": "foe-the-tithe-bird-krea2-turbo-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 The Tithe-Bird",
   "row": "",
   "column": "mage-flow-turbo-int8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast storm-grey seabird mantling over an iron beacon cradle on a basalt summit, wingspan spilling past the frame, one lamp-pale eye catching the light",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1317 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-tithe-bird-mage-flow-turbo-int8.webp",
   "tile": "img/foe-the-tithe-bird-mage-flow-turbo-int8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "mage_flow_turbo_int8_convrot.safetensors",
   "arm_column": "mage-flow-turbo-int8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1317,
   "render_seconds": 0.77,
   "colour": {
    "mean_hue_deg": 29.1,
    "mean_saturation": 0.4536,
    "hue_spread_deg": 7.7,
    "resultant_R": 0.991,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_tithe_bird__mageflow-turbo__768__s1317.jpg",
   "id": "foe-the-tithe-bird-mage-flow-turbo-int8",
   "archive_id": "foe_the_tithe_bird__mageflow-turbo__768__s1317",
   "cell_label": "",
   "at": "2026-08-23T16:01:45+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-mageflow-turbo-int8",
   "law": "cleared",
   "law_detail": "mage-flow 4B turbo (int8) \u2014 MIT License",
   "sid": "foe-the-tithe-bird-mage-flow-turbo-int8"
  },
  {
   "subject": "FOE \u00b7 The Tithe-Bird",
   "row": "",
   "column": "mage-flow-turbo-int8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast storm-grey seabird mantling over an iron beacon cradle on a basalt summit, wingspan spilling past the frame, one lamp-pale eye catching the light",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1317 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-tithe-bird-mage-flow-turbo-int8-bare.webp",
   "tile": "img/foe-the-tithe-bird-mage-flow-turbo-int8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "mage_flow_turbo_int8_convrot.safetensors",
   "arm_column": "mage-flow-turbo-int8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1317,
   "render_seconds": 0.83,
   "colour": {
    "mean_hue_deg": 209.4,
    "mean_saturation": 0.2162,
    "hue_spread_deg": 40.5,
    "resultant_R": 0.7786,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_tithe_bird__mageflow-turbo__768__bare__s1317.jpg",
   "id": "foe-the-tithe-bird-mage-flow-turbo-int8-bare",
   "archive_id": "foe_the_tithe_bird__mageflow-turbo__768__bare__s1317",
   "cell_label": "",
   "at": "2026-08-23T17:36:59+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-mageflow-turbo-int8",
   "law": "cleared",
   "law_detail": "mage-flow 4B turbo (int8) \u2014 MIT License",
   "sid": "foe-the-tithe-bird-mage-flow-turbo-int8-bare"
  },
  {
   "subject": "FOE \u00b7 The Tithe-Bird",
   "row": "",
   "column": "ernie-image-turbo-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast storm-grey seabird mantling over an iron beacon cradle on a basalt summit, wingspan spilling past the frame, one lamp-pale eye catching the light",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1317 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-tithe-bird-ernie-image-turbo-bf16.webp",
   "tile": "img/foe-the-tithe-bird-ernie-image-turbo-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "ernie-image-turbo.safetensors",
   "arm_column": "ernie-image-turbo-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1317,
   "render_seconds": 1.47,
   "colour": {
    "mean_hue_deg": 31.3,
    "mean_saturation": 0.3808,
    "hue_spread_deg": 19.2,
    "resultant_R": 0.9454,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_tithe_bird__ernie-turbo__768__s1317.jpg",
   "id": "foe-the-tithe-bird-ernie-image-turbo-bf16",
   "archive_id": "foe_the_tithe_bird__ernie-turbo__768__s1317",
   "cell_label": "",
   "at": "2026-08-23T16:03:44+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-ernie-turbo-bf16",
   "law": "cleared",
   "law_detail": "ernie-image turbo (baidu) \u2014 Apache License 2.0",
   "sid": "foe-the-tithe-bird-ernie-image-turbo-bf16"
  },
  {
   "subject": "FOE \u00b7 The Tithe-Bird",
   "row": "",
   "column": "ernie-image-turbo-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast storm-grey seabird mantling over an iron beacon cradle on a basalt summit, wingspan spilling past the frame, one lamp-pale eye catching the light",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1317 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-tithe-bird-ernie-image-turbo-bf16-bare.webp",
   "tile": "img/foe-the-tithe-bird-ernie-image-turbo-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "ernie-image-turbo.safetensors",
   "arm_column": "ernie-image-turbo-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1317,
   "render_seconds": 1.49,
   "colour": {
    "mean_hue_deg": 203.2,
    "mean_saturation": 0.1788,
    "hue_spread_deg": 46.3,
    "resultant_R": 0.7212,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_tithe_bird__ernie-turbo__768__bare__s1317.jpg",
   "id": "foe-the-tithe-bird-ernie-image-turbo-bf16-bare",
   "archive_id": "foe_the_tithe_bird__ernie-turbo__768__bare__s1317",
   "cell_label": "",
   "at": "2026-08-23T17:38:00+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-ernie-turbo-bf16",
   "law": "cleared",
   "law_detail": "ernie-image turbo (baidu) \u2014 Apache License 2.0",
   "sid": "foe-the-tithe-bird-ernie-image-turbo-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 The Tithe-Bird",
   "row": "",
   "column": "kandinsky5-lite-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast storm-grey seabird mantling over an iron beacon cradle on a basalt summit, wingspan spilling past the frame, one lamp-pale eye catching the light",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1317 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-tithe-bird-kandinsky5-lite-bf16.webp",
   "tile": "img/foe-the-tithe-bird-kandinsky5-lite-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "kandinsky5lite_t2i.safetensors",
   "arm_column": "kandinsky5-lite-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1317,
   "render_seconds": 6.28,
   "colour": {
    "mean_hue_deg": 31.4,
    "mean_saturation": 0.306,
    "hue_spread_deg": 10.1,
    "resultant_R": 0.9846,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_tithe_bird__kandinsky5-lite__768__s1317.jpg",
   "id": "foe-the-tithe-bird-kandinsky5-lite-bf16",
   "archive_id": "foe_the_tithe_bird__kandinsky5-lite__768__s1317",
   "cell_label": "",
   "at": "2026-08-23T16:34:46+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/p2-kandinsky5-lite-bf16",
   "law": "cleared",
   "law_detail": "kandinsky 5.0 image lite \u2014 The MIT License (MIT)",
   "sid": "foe-the-tithe-bird-kandinsky5-lite-bf16"
  },
  {
   "subject": "FOE \u00b7 The Tithe-Bird",
   "row": "",
   "column": "kandinsky5-lite-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast storm-grey seabird mantling over an iron beacon cradle on a basalt summit, wingspan spilling past the frame, one lamp-pale eye catching the light",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1317 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-tithe-bird-kandinsky5-lite-bf16-bare.webp",
   "tile": "img/foe-the-tithe-bird-kandinsky5-lite-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "kandinsky5lite_t2i.safetensors",
   "arm_column": "kandinsky5-lite-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1317,
   "render_seconds": 6.19,
   "colour": {
    "mean_hue_deg": 215.7,
    "mean_saturation": 0.1922,
    "hue_spread_deg": 25.7,
    "resultant_R": 0.9044,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_tithe_bird__kandinsky5-lite__768__bare__s1317.jpg",
   "id": "foe-the-tithe-bird-kandinsky5-lite-bf16-bare",
   "archive_id": "foe_the_tithe_bird__kandinsky5-lite__768__bare__s1317",
   "cell_label": "",
   "at": "2026-08-23T17:48:49+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/p2-kandinsky5-lite-bf16",
   "law": "cleared",
   "law_detail": "kandinsky 5.0 image lite \u2014 The MIT License (MIT)",
   "sid": "foe-the-tithe-bird-kandinsky5-lite-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 The Lamp-Moth",
   "row": "",
   "column": "z-image-turbo-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast pale moth banking through a lighthouse beam at night, wing-dust streaming in the light, the lantern glass glowing beneath it",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1318 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-lamp-moth-z-image-turbo-bf16.webp",
   "tile": "img/foe-the-lamp-moth-z-image-turbo-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_turbo_bf16.safetensors",
   "arm_column": "z-image-turbo-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1318,
   "render_seconds": 1.22,
   "colour": {
    "mean_hue_deg": 24.6,
    "mean_saturation": 0.5221,
    "hue_spread_deg": 8.4,
    "resultant_R": 0.9893,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_lamp_moth__ctrl-z-image-turbo__768__s1318.jpg",
   "id": "foe-the-lamp-moth-z-image-turbo-bf16",
   "archive_id": "foe_the_lamp_moth__ctrl-z-image-turbo__768__s1318",
   "cell_label": "",
   "at": "2026-08-23T15:20:50+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/ctrl-z-image-turbo",
   "law": "cleared",
   "law_detail": "z-image turbo (bf16) \u2014 Apache-2.0",
   "sid": "foe-the-lamp-moth-z-image-turbo-bf16"
  },
  {
   "subject": "FOE \u00b7 The Lamp-Moth",
   "row": "",
   "column": "z-image-turbo-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast pale moth banking through a lighthouse beam at night, wing-dust streaming in the light, the lantern glass glowing beneath it",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1318 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-lamp-moth-z-image-turbo-bf16-bare.webp",
   "tile": "img/foe-the-lamp-moth-z-image-turbo-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_turbo_bf16.safetensors",
   "arm_column": "z-image-turbo-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1318,
   "render_seconds": 1.2,
   "colour": {
    "mean_hue_deg": 216.5,
    "mean_saturation": 0.5586,
    "hue_spread_deg": 44.4,
    "resultant_R": 0.7403,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_lamp_moth__ctrl-z-image-turbo__768__bare__s1318.jpg",
   "id": "foe-the-lamp-moth-z-image-turbo-bf16-bare",
   "archive_id": "foe_the_lamp_moth__ctrl-z-image-turbo__768__bare__s1318",
   "cell_label": "",
   "at": "2026-08-23T17:21:37+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/ctrl-z-image-turbo",
   "law": "cleared",
   "law_detail": "z-image turbo (bf16) \u2014 Apache-2.0",
   "sid": "foe-the-lamp-moth-z-image-turbo-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 The Lamp-Moth",
   "row": "",
   "column": "flux2-klein-4b-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast pale moth banking through a lighthouse beam at night, wing-dust streaming in the light, the lantern glass glowing beneath it",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1318 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-lamp-moth-flux2-klein-4b-bf16.webp",
   "tile": "img/foe-the-lamp-moth-flux2-klein-4b-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "flux-2-klein-4b.safetensors",
   "arm_column": "flux2-klein-4b-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": null,
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1318,
   "render_seconds": 0.62,
   "colour": {
    "mean_hue_deg": 339.4,
    "mean_saturation": 0.3719,
    "hue_spread_deg": 79.9,
    "resultant_R": 0.3786,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_lamp_moth__flux2-klein-4b__768__s1318.jpg",
   "id": "foe-the-lamp-moth-flux2-klein-4b-bf16",
   "archive_id": "foe_the_lamp_moth__flux2-klein-4b__768__s1318",
   "cell_label": "",
   "at": "2026-08-23T15:22:38+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-klein4b-bf16",
   "law": "cleared",
   "law_detail": "flux.2 [klein] 4B \u2014 Apache License 2.0",
   "sid": "foe-the-lamp-moth-flux2-klein-4b-bf16"
  },
  {
   "subject": "FOE \u00b7 The Lamp-Moth",
   "row": "",
   "column": "flux2-klein-4b-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast pale moth banking through a lighthouse beam at night, wing-dust streaming in the light, the lantern glass glowing beneath it",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1318 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-lamp-moth-flux2-klein-4b-bf16-bare.webp",
   "tile": "img/foe-the-lamp-moth-flux2-klein-4b-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "flux-2-klein-4b.safetensors",
   "arm_column": "flux2-klein-4b-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": null,
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1318,
   "render_seconds": 0.6,
   "colour": {
    "mean_hue_deg": 225.8,
    "mean_saturation": 0.4829,
    "hue_spread_deg": 60.4,
    "resultant_R": 0.5741,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_lamp_moth__flux2-klein-4b__768__bare__s1318.jpg",
   "id": "foe-the-lamp-moth-flux2-klein-4b-bf16-bare",
   "archive_id": "foe_the_lamp_moth__flux2-klein-4b__768__bare__s1318",
   "cell_label": "",
   "at": "2026-08-23T17:22:14+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-klein4b-bf16",
   "law": "cleared",
   "law_detail": "flux.2 [klein] 4B \u2014 Apache License 2.0",
   "sid": "foe-the-lamp-moth-flux2-klein-4b-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 The Lamp-Moth",
   "row": "",
   "column": "z-image-base-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast pale moth banking through a lighthouse beam at night, wing-dust streaming in the light, the lantern glass glowing beneath it",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1318 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-lamp-moth-z-image-base-bf16.webp",
   "tile": "img/foe-the-lamp-moth-z-image-base-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_bf16.safetensors",
   "arm_column": "z-image-base-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 4.0,
   "width": 768,
   "height": 768,
   "seed": 1318,
   "render_seconds": 7.88,
   "colour": {
    "mean_hue_deg": 30.4,
    "mean_saturation": 0.4582,
    "hue_spread_deg": 9.0,
    "resultant_R": 0.9876,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_lamp_moth__z-image-base__768__s1318.jpg",
   "id": "foe-the-lamp-moth-z-image-base-bf16",
   "archive_id": "foe_the_lamp_moth__z-image-base__768__s1318",
   "cell_label": "",
   "at": "2026-08-23T15:28:21+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-zimage-base-bf16",
   "law": "cleared",
   "law_detail": "z-image base (undistilled) \u2014 Apache-2.0",
   "sid": "foe-the-lamp-moth-z-image-base-bf16"
  },
  {
   "subject": "FOE \u00b7 The Lamp-Moth",
   "row": "",
   "column": "z-image-base-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast pale moth banking through a lighthouse beam at night, wing-dust streaming in the light, the lantern glass glowing beneath it",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1318 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-lamp-moth-z-image-base-bf16-bare.webp",
   "tile": "img/foe-the-lamp-moth-z-image-base-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_bf16.safetensors",
   "arm_column": "z-image-base-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 4.0,
   "width": 768,
   "height": 768,
   "seed": 1318,
   "render_seconds": 7.91,
   "colour": {
    "mean_hue_deg": 220.0,
    "mean_saturation": 0.7572,
    "hue_spread_deg": 42.8,
    "resultant_R": 0.7561,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_lamp_moth__z-image-base__768__bare__s1318.jpg",
   "id": "foe-the-lamp-moth-z-image-base-bf16-bare",
   "archive_id": "foe_the_lamp_moth__z-image-base__768__bare__s1318",
   "cell_label": "",
   "at": "2026-08-23T17:26:10+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-zimage-base-bf16",
   "law": "cleared",
   "law_detail": "z-image base (undistilled) \u2014 Apache-2.0",
   "sid": "foe-the-lamp-moth-z-image-base-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 The Lamp-Moth",
   "row": "",
   "column": "hidream-o1-dev-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast pale moth banking through a lighthouse beam at night, wing-dust streaming in the light, the lantern glass glowing beneath it",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1318 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-lamp-moth-hidream-o1-dev-fp8.webp",
   "tile": "img/foe-the-lamp-moth-hidream-o1-dev-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "hidream_o1_image_dev_fp8_scaled.safetensors",
   "arm_column": "hidream-o1-dev-fp8",
   "lora": [],
   "sampler": null,
   "scheduler": "normal",
   "steps": 32,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1318,
   "render_seconds": 2.46,
   "colour": {
    "mean_hue_deg": 346.0,
    "mean_saturation": 0.2718,
    "hue_spread_deg": 76.1,
    "resultant_R": 0.4143,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_lamp_moth__hidream-o1-dev__768__s1318.jpg",
   "id": "foe-the-lamp-moth-hidream-o1-dev-fp8",
   "archive_id": "foe_the_lamp_moth__hidream-o1-dev__768__s1318",
   "cell_label": "",
   "at": "2026-08-23T15:38:53+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-hidream-o1-dev-fp8",
   "law": "cleared",
   "law_detail": "hidream-o1-image-dev \u2014 MIT",
   "sid": "foe-the-lamp-moth-hidream-o1-dev-fp8"
  },
  {
   "subject": "FOE \u00b7 The Lamp-Moth",
   "row": "",
   "column": "hidream-o1-dev-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast pale moth banking through a lighthouse beam at night, wing-dust streaming in the light, the lantern glass glowing beneath it",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1318 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-lamp-moth-hidream-o1-dev-fp8-bare.webp",
   "tile": "img/foe-the-lamp-moth-hidream-o1-dev-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "hidream_o1_image_dev_fp8_scaled.safetensors",
   "arm_column": "hidream-o1-dev-fp8",
   "lora": [],
   "sampler": null,
   "scheduler": "normal",
   "steps": 32,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1318,
   "render_seconds": 2.52,
   "colour": {
    "mean_hue_deg": 295.8,
    "mean_saturation": 0.2126,
    "hue_spread_deg": 101.6,
    "resultant_R": 0.2073,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_lamp_moth__hidream-o1-dev__768__bare__s1318.jpg",
   "id": "foe-the-lamp-moth-hidream-o1-dev-fp8-bare",
   "archive_id": "foe_the_lamp_moth__hidream-o1-dev__768__bare__s1318",
   "cell_label": "",
   "at": "2026-08-23T17:28:29+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-hidream-o1-dev-fp8",
   "law": "cleared",
   "law_detail": "hidream-o1-image-dev \u2014 MIT",
   "sid": "foe-the-lamp-moth-hidream-o1-dev-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 The Lamp-Moth",
   "row": "",
   "column": "chroma1-hd-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast pale moth banking through a lighthouse beam at night, wing-dust streaming in the light, the lantern glass glowing beneath it",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1318 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-lamp-moth-chroma1-hd-fp8.webp",
   "tile": "img/foe-the-lamp-moth-chroma1-hd-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "Chroma1-HD-fp8mixed.safetensors",
   "arm_column": "chroma1-hd-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "beta",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1318,
   "render_seconds": 7.65,
   "colour": {
    "mean_hue_deg": 34.9,
    "mean_saturation": 0.5976,
    "hue_spread_deg": 5.7,
    "resultant_R": 0.995,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_lamp_moth__chroma1-hd__768__s1318.jpg",
   "id": "foe-the-lamp-moth-chroma1-hd-fp8",
   "archive_id": "foe_the_lamp_moth__chroma1-hd__768__s1318",
   "cell_label": "",
   "at": "2026-08-23T15:47:14+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-chroma1-hd-fp8",
   "law": "cleared",
   "law_detail": "chroma1-hd (fp8mixed repack) \u2014 Apache-2.0",
   "sid": "foe-the-lamp-moth-chroma1-hd-fp8"
  },
  {
   "subject": "FOE \u00b7 The Lamp-Moth",
   "row": "",
   "column": "chroma1-hd-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast pale moth banking through a lighthouse beam at night, wing-dust streaming in the light, the lantern glass glowing beneath it",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1318 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-lamp-moth-chroma1-hd-fp8-bare.webp",
   "tile": "img/foe-the-lamp-moth-chroma1-hd-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "Chroma1-HD-fp8mixed.safetensors",
   "arm_column": "chroma1-hd-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "beta",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1318,
   "render_seconds": 7.78,
   "colour": {
    "mean_hue_deg": 49.7,
    "mean_saturation": 0.3829,
    "hue_spread_deg": 22.7,
    "resultant_R": 0.9242,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_lamp_moth__chroma1-hd__768__bare__s1318.jpg",
   "id": "foe-the-lamp-moth-chroma1-hd-fp8-bare",
   "archive_id": "foe_the_lamp_moth__chroma1-hd__768__bare__s1318",
   "cell_label": "",
   "at": "2026-08-23T17:32:55+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-chroma1-hd-fp8",
   "law": "cleared",
   "law_detail": "chroma1-hd (fp8mixed repack) \u2014 Apache-2.0",
   "sid": "foe-the-lamp-moth-chroma1-hd-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 The Lamp-Moth",
   "row": "",
   "column": "krea2-turbo-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast pale moth banking through a lighthouse beam at night, wing-dust streaming in the light, the lantern glass glowing beneath it",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1318 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-lamp-moth-krea2-turbo-fp8.webp",
   "tile": "img/foe-the-lamp-moth-krea2-turbo-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "krea2_turbo_fp8_scaled.safetensors",
   "arm_column": "krea2-turbo-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1318,
   "render_seconds": 2.09,
   "colour": {
    "mean_hue_deg": 25.9,
    "mean_saturation": 0.4408,
    "hue_spread_deg": 89.6,
    "resultant_R": 0.2945,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_lamp_moth__krea2-turbo__768__s1318.jpg",
   "id": "foe-the-lamp-moth-krea2-turbo-fp8",
   "archive_id": "foe_the_lamp_moth__krea2-turbo__768__s1318",
   "cell_label": "",
   "at": "2026-08-23T15:58:54+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-krea2-turbo-fp8",
   "law": "cleared",
   "law_detail": "krea 2 turbo (fp8_scaled) \u2014 Krea 2 Community License Agreement v.1",
   "sid": "foe-the-lamp-moth-krea2-turbo-fp8"
  },
  {
   "subject": "FOE \u00b7 The Lamp-Moth",
   "row": "",
   "column": "krea2-turbo-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast pale moth banking through a lighthouse beam at night, wing-dust streaming in the light, the lantern glass glowing beneath it",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1318 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-lamp-moth-krea2-turbo-fp8-bare.webp",
   "tile": "img/foe-the-lamp-moth-krea2-turbo-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "krea2_turbo_fp8_scaled.safetensors",
   "arm_column": "krea2-turbo-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1318,
   "render_seconds": 2.05,
   "colour": {
    "mean_hue_deg": 212.8,
    "mean_saturation": 0.6015,
    "hue_spread_deg": 41.0,
    "resultant_R": 0.7738,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_lamp_moth__krea2-turbo__768__bare__s1318.jpg",
   "id": "foe-the-lamp-moth-krea2-turbo-fp8-bare",
   "archive_id": "foe_the_lamp_moth__krea2-turbo__768__bare__s1318",
   "cell_label": "",
   "at": "2026-08-23T17:36:01+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-krea2-turbo-fp8",
   "law": "cleared",
   "law_detail": "krea 2 turbo (fp8_scaled) \u2014 Krea 2 Community License Agreement v.1",
   "sid": "foe-the-lamp-moth-krea2-turbo-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 The Lamp-Moth",
   "row": "",
   "column": "mage-flow-turbo-int8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast pale moth banking through a lighthouse beam at night, wing-dust streaming in the light, the lantern glass glowing beneath it",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1318 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-lamp-moth-mage-flow-turbo-int8.webp",
   "tile": "img/foe-the-lamp-moth-mage-flow-turbo-int8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "mage_flow_turbo_int8_convrot.safetensors",
   "arm_column": "mage-flow-turbo-int8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1318,
   "render_seconds": 0.78,
   "colour": {
    "mean_hue_deg": 27.1,
    "mean_saturation": 0.7094,
    "hue_spread_deg": 5.5,
    "resultant_R": 0.9953,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_lamp_moth__mageflow-turbo__768__s1318.jpg",
   "id": "foe-the-lamp-moth-mage-flow-turbo-int8",
   "archive_id": "foe_the_lamp_moth__mageflow-turbo__768__s1318",
   "cell_label": "",
   "at": "2026-08-23T16:01:47+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-mageflow-turbo-int8",
   "law": "cleared",
   "law_detail": "mage-flow 4B turbo (int8) \u2014 MIT License",
   "sid": "foe-the-lamp-moth-mage-flow-turbo-int8"
  },
  {
   "subject": "FOE \u00b7 The Lamp-Moth",
   "row": "",
   "column": "mage-flow-turbo-int8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast pale moth banking through a lighthouse beam at night, wing-dust streaming in the light, the lantern glass glowing beneath it",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1318 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-lamp-moth-mage-flow-turbo-int8-bare.webp",
   "tile": "img/foe-the-lamp-moth-mage-flow-turbo-int8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "mage_flow_turbo_int8_convrot.safetensors",
   "arm_column": "mage-flow-turbo-int8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1318,
   "render_seconds": 0.84,
   "colour": {
    "mean_hue_deg": 208.8,
    "mean_saturation": 0.5448,
    "hue_spread_deg": 40.9,
    "resultant_R": 0.7748,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_lamp_moth__mageflow-turbo__768__bare__s1318.jpg",
   "id": "foe-the-lamp-moth-mage-flow-turbo-int8-bare",
   "archive_id": "foe_the_lamp_moth__mageflow-turbo__768__bare__s1318",
   "cell_label": "",
   "at": "2026-08-23T17:37:01+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-mageflow-turbo-int8",
   "law": "cleared",
   "law_detail": "mage-flow 4B turbo (int8) \u2014 MIT License",
   "sid": "foe-the-lamp-moth-mage-flow-turbo-int8-bare"
  },
  {
   "subject": "FOE \u00b7 The Lamp-Moth",
   "row": "",
   "column": "ernie-image-turbo-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast pale moth banking through a lighthouse beam at night, wing-dust streaming in the light, the lantern glass glowing beneath it",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1318 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-lamp-moth-ernie-image-turbo-bf16.webp",
   "tile": "img/foe-the-lamp-moth-ernie-image-turbo-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "ernie-image-turbo.safetensors",
   "arm_column": "ernie-image-turbo-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1318,
   "render_seconds": 1.47,
   "colour": {
    "mean_hue_deg": 29.0,
    "mean_saturation": 0.4935,
    "hue_spread_deg": 52.9,
    "resultant_R": 0.6531,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_lamp_moth__ernie-turbo__768__s1318.jpg",
   "id": "foe-the-lamp-moth-ernie-image-turbo-bf16",
   "archive_id": "foe_the_lamp_moth__ernie-turbo__768__s1318",
   "cell_label": "",
   "at": "2026-08-23T16:03:48+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-ernie-turbo-bf16",
   "law": "cleared",
   "law_detail": "ernie-image turbo (baidu) \u2014 Apache License 2.0",
   "sid": "foe-the-lamp-moth-ernie-image-turbo-bf16"
  },
  {
   "subject": "FOE \u00b7 The Lamp-Moth",
   "row": "",
   "column": "ernie-image-turbo-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast pale moth banking through a lighthouse beam at night, wing-dust streaming in the light, the lantern glass glowing beneath it",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1318 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-lamp-moth-ernie-image-turbo-bf16-bare.webp",
   "tile": "img/foe-the-lamp-moth-ernie-image-turbo-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "ernie-image-turbo.safetensors",
   "arm_column": "ernie-image-turbo-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1318,
   "render_seconds": 1.46,
   "colour": {
    "mean_hue_deg": 181.7,
    "mean_saturation": 0.5571,
    "hue_spread_deg": 85.0,
    "resultant_R": 0.3327,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_lamp_moth__ernie-turbo__768__bare__s1318.jpg",
   "id": "foe-the-lamp-moth-ernie-image-turbo-bf16-bare",
   "archive_id": "foe_the_lamp_moth__ernie-turbo__768__bare__s1318",
   "cell_label": "",
   "at": "2026-08-23T17:38:10+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-ernie-turbo-bf16",
   "law": "cleared",
   "law_detail": "ernie-image turbo (baidu) \u2014 Apache License 2.0",
   "sid": "foe-the-lamp-moth-ernie-image-turbo-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 The Lamp-Moth",
   "row": "",
   "column": "kandinsky5-lite-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast pale moth banking through a lighthouse beam at night, wing-dust streaming in the light, the lantern glass glowing beneath it",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1318 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-lamp-moth-kandinsky5-lite-bf16.webp",
   "tile": "img/foe-the-lamp-moth-kandinsky5-lite-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "kandinsky5lite_t2i.safetensors",
   "arm_column": "kandinsky5-lite-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1318,
   "render_seconds": 6.27,
   "colour": {
    "mean_hue_deg": 29.5,
    "mean_saturation": 0.5899,
    "hue_spread_deg": 4.2,
    "resultant_R": 0.9973,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_lamp_moth__kandinsky5-lite__768__s1318.jpg",
   "id": "foe-the-lamp-moth-kandinsky5-lite-bf16",
   "archive_id": "foe_the_lamp_moth__kandinsky5-lite__768__s1318",
   "cell_label": "",
   "at": "2026-08-23T16:35:05+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/p2-kandinsky5-lite-bf16",
   "law": "cleared",
   "law_detail": "kandinsky 5.0 image lite \u2014 The MIT License (MIT)",
   "sid": "foe-the-lamp-moth-kandinsky5-lite-bf16"
  },
  {
   "subject": "FOE \u00b7 The Lamp-Moth",
   "row": "",
   "column": "kandinsky5-lite-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a vast pale moth banking through a lighthouse beam at night, wing-dust streaming in the light, the lantern glass glowing beneath it",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1318 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-the-lamp-moth-kandinsky5-lite-bf16-bare.webp",
   "tile": "img/foe-the-lamp-moth-kandinsky5-lite-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "kandinsky5lite_t2i.safetensors",
   "arm_column": "kandinsky5-lite-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1318,
   "render_seconds": 6.19,
   "colour": {
    "mean_hue_deg": 47.1,
    "mean_saturation": 0.2694,
    "hue_spread_deg": 24.8,
    "resultant_R": 0.9107,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_the_lamp_moth__kandinsky5-lite__768__bare__s1318.jpg",
   "id": "foe-the-lamp-moth-kandinsky5-lite-bf16-bare",
   "archive_id": "foe_the_lamp_moth__kandinsky5-lite__768__bare__s1318",
   "cell_label": "",
   "at": "2026-08-23T17:49:08+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/p2-kandinsky5-lite-bf16",
   "law": "cleared",
   "law_detail": "kandinsky 5.0 image lite \u2014 The MIT License (MIT)",
   "sid": "foe-the-lamp-moth-kandinsky5-lite-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 a gale-wight",
   "row": "",
   "column": "z-image-turbo-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall figure wrapped in stolen oilskin and flag-cloth standing balanced on a rope line in a gale, utterly still, ragged edges snapping horizontal, sea far below",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1319 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-gale-wight-z-image-turbo-bf16.webp",
   "tile": "img/foe-a-gale-wight-z-image-turbo-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_turbo_bf16.safetensors",
   "arm_column": "z-image-turbo-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1319,
   "render_seconds": 1.22,
   "colour": {
    "mean_hue_deg": 36.2,
    "mean_saturation": 0.3679,
    "hue_spread_deg": 13.1,
    "resultant_R": 0.9743,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_gale_wight__ctrl-z-image-turbo__768__s1319.jpg",
   "id": "foe-a-gale-wight-z-image-turbo-bf16",
   "archive_id": "foe_gale_wight__ctrl-z-image-turbo__768__s1319",
   "cell_label": "",
   "at": "2026-08-23T15:20:54+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/ctrl-z-image-turbo",
   "law": "cleared",
   "law_detail": "z-image turbo (bf16) \u2014 Apache-2.0",
   "sid": "foe-a-gale-wight-z-image-turbo-bf16"
  },
  {
   "subject": "FOE \u00b7 a gale-wight",
   "row": "",
   "column": "z-image-turbo-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall figure wrapped in stolen oilskin and flag-cloth standing balanced on a rope line in a gale, utterly still, ragged edges snapping horizontal, sea far below",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1319 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-gale-wight-z-image-turbo-bf16-bare.webp",
   "tile": "img/foe-a-gale-wight-z-image-turbo-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_turbo_bf16.safetensors",
   "arm_column": "z-image-turbo-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1319,
   "render_seconds": 1.2,
   "colour": {
    "mean_hue_deg": 209.5,
    "mean_saturation": 0.1448,
    "hue_spread_deg": 36.3,
    "resultant_R": 0.8182,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_gale_wight__ctrl-z-image-turbo__768__bare__s1319.jpg",
   "id": "foe-a-gale-wight-z-image-turbo-bf16-bare",
   "archive_id": "foe_gale_wight__ctrl-z-image-turbo__768__bare__s1319",
   "cell_label": "",
   "at": "2026-08-23T17:21:41+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/ctrl-z-image-turbo",
   "law": "cleared",
   "law_detail": "z-image turbo (bf16) \u2014 Apache-2.0",
   "sid": "foe-a-gale-wight-z-image-turbo-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 a gale-wight",
   "row": "",
   "column": "flux2-klein-4b-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall figure wrapped in stolen oilskin and flag-cloth standing balanced on a rope line in a gale, utterly still, ragged edges snapping horizontal, sea far below",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1319 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-gale-wight-flux2-klein-4b-bf16.webp",
   "tile": "img/foe-a-gale-wight-flux2-klein-4b-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "flux-2-klein-4b.safetensors",
   "arm_column": "flux2-klein-4b-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": null,
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1319,
   "render_seconds": 0.6,
   "colour": {
    "mean_hue_deg": 35.7,
    "mean_saturation": 0.3885,
    "hue_spread_deg": 8.5,
    "resultant_R": 0.9891,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_gale_wight__flux2-klein-4b__768__s1319.jpg",
   "id": "foe-a-gale-wight-flux2-klein-4b-bf16",
   "archive_id": "foe_gale_wight__flux2-klein-4b__768__s1319",
   "cell_label": "",
   "at": "2026-08-23T15:22:40+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-klein4b-bf16",
   "law": "cleared",
   "law_detail": "flux.2 [klein] 4B \u2014 Apache License 2.0",
   "sid": "foe-a-gale-wight-flux2-klein-4b-bf16"
  },
  {
   "subject": "FOE \u00b7 a gale-wight",
   "row": "",
   "column": "flux2-klein-4b-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall figure wrapped in stolen oilskin and flag-cloth standing balanced on a rope line in a gale, utterly still, ragged edges snapping horizontal, sea far below",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1319 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-gale-wight-flux2-klein-4b-bf16-bare.webp",
   "tile": "img/foe-a-gale-wight-flux2-klein-4b-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "flux-2-klein-4b.safetensors",
   "arm_column": "flux2-klein-4b-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": null,
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1319,
   "render_seconds": 0.6,
   "colour": {
    "mean_hue_deg": 193.4,
    "mean_saturation": 0.2779,
    "hue_spread_deg": 21.8,
    "resultant_R": 0.9302,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_gale_wight__flux2-klein-4b__768__bare__s1319.jpg",
   "id": "foe-a-gale-wight-flux2-klein-4b-bf16-bare",
   "archive_id": "foe_gale_wight__flux2-klein-4b__768__bare__s1319",
   "cell_label": "",
   "at": "2026-08-23T17:22:16+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-klein4b-bf16",
   "law": "cleared",
   "law_detail": "flux.2 [klein] 4B \u2014 Apache License 2.0",
   "sid": "foe-a-gale-wight-flux2-klein-4b-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 a gale-wight",
   "row": "",
   "column": "z-image-base-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall figure wrapped in stolen oilskin and flag-cloth standing balanced on a rope line in a gale, utterly still, ragged edges snapping horizontal, sea far below",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1319 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-gale-wight-z-image-base-bf16.webp",
   "tile": "img/foe-a-gale-wight-z-image-base-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_bf16.safetensors",
   "arm_column": "z-image-base-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 4.0,
   "width": 768,
   "height": 768,
   "seed": 1319,
   "render_seconds": 7.87,
   "colour": {
    "mean_hue_deg": 36.4,
    "mean_saturation": 0.419,
    "hue_spread_deg": 3.3,
    "resultant_R": 0.9983,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_gale_wight__z-image-base__768__s1319.jpg",
   "id": "foe-a-gale-wight-z-image-base-bf16",
   "archive_id": "foe_gale_wight__z-image-base__768__s1319",
   "cell_label": "",
   "at": "2026-08-23T15:28:45+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-zimage-base-bf16",
   "law": "cleared",
   "law_detail": "z-image base (undistilled) \u2014 Apache-2.0",
   "sid": "foe-a-gale-wight-z-image-base-bf16"
  },
  {
   "subject": "FOE \u00b7 a gale-wight",
   "row": "",
   "column": "z-image-base-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall figure wrapped in stolen oilskin and flag-cloth standing balanced on a rope line in a gale, utterly still, ragged edges snapping horizontal, sea far below",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1319 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-gale-wight-z-image-base-bf16-bare.webp",
   "tile": "img/foe-a-gale-wight-z-image-base-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_bf16.safetensors",
   "arm_column": "z-image-base-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 4.0,
   "width": 768,
   "height": 768,
   "seed": 1319,
   "render_seconds": 7.91,
   "colour": {
    "mean_hue_deg": 210.7,
    "mean_saturation": 0.1687,
    "hue_spread_deg": 30.7,
    "resultant_R": 0.8661,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_gale_wight__z-image-base__768__bare__s1319.jpg",
   "id": "foe-a-gale-wight-z-image-base-bf16-bare",
   "archive_id": "foe_gale_wight__z-image-base__768__bare__s1319",
   "cell_label": "",
   "at": "2026-08-23T17:26:34+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-zimage-base-bf16",
   "law": "cleared",
   "law_detail": "z-image base (undistilled) \u2014 Apache-2.0",
   "sid": "foe-a-gale-wight-z-image-base-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 a gale-wight",
   "row": "",
   "column": "hidream-o1-dev-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall figure wrapped in stolen oilskin and flag-cloth standing balanced on a rope line in a gale, utterly still, ragged edges snapping horizontal, sea far below",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1319 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-gale-wight-hidream-o1-dev-fp8.webp",
   "tile": "img/foe-a-gale-wight-hidream-o1-dev-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "hidream_o1_image_dev_fp8_scaled.safetensors",
   "arm_column": "hidream-o1-dev-fp8",
   "lora": [],
   "sampler": null,
   "scheduler": "normal",
   "steps": 32,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1319,
   "render_seconds": 2.51,
   "colour": {
    "mean_hue_deg": 19.3,
    "mean_saturation": 0.2556,
    "hue_spread_deg": 30.7,
    "resultant_R": 0.8664,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_gale_wight__hidream-o1-dev__768__s1319.jpg",
   "id": "foe-a-gale-wight-hidream-o1-dev-fp8",
   "archive_id": "foe_gale_wight__hidream-o1-dev__768__s1319",
   "cell_label": "",
   "at": "2026-08-23T15:39:01+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-hidream-o1-dev-fp8",
   "law": "cleared",
   "law_detail": "hidream-o1-image-dev \u2014 MIT",
   "sid": "foe-a-gale-wight-hidream-o1-dev-fp8"
  },
  {
   "subject": "FOE \u00b7 a gale-wight",
   "row": "",
   "column": "hidream-o1-dev-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall figure wrapped in stolen oilskin and flag-cloth standing balanced on a rope line in a gale, utterly still, ragged edges snapping horizontal, sea far below",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1319 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-gale-wight-hidream-o1-dev-fp8-bare.webp",
   "tile": "img/foe-a-gale-wight-hidream-o1-dev-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "hidream_o1_image_dev_fp8_scaled.safetensors",
   "arm_column": "hidream-o1-dev-fp8",
   "lora": [],
   "sampler": null,
   "scheduler": "normal",
   "steps": 32,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1319,
   "render_seconds": 2.65,
   "colour": {
    "mean_hue_deg": 201.4,
    "mean_saturation": 0.174,
    "hue_spread_deg": 68.0,
    "resultant_R": 0.4946,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_gale_wight__hidream-o1-dev__768__bare__s1319.jpg",
   "id": "foe-a-gale-wight-hidream-o1-dev-fp8-bare",
   "archive_id": "foe_gale_wight__hidream-o1-dev__768__bare__s1319",
   "cell_label": "",
   "at": "2026-08-23T17:28:37+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-hidream-o1-dev-fp8",
   "law": "cleared",
   "law_detail": "hidream-o1-image-dev \u2014 MIT",
   "sid": "foe-a-gale-wight-hidream-o1-dev-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 a gale-wight",
   "row": "",
   "column": "chroma1-hd-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall figure wrapped in stolen oilskin and flag-cloth standing balanced on a rope line in a gale, utterly still, ragged edges snapping horizontal, sea far below",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1319 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-gale-wight-chroma1-hd-fp8.webp",
   "tile": "img/foe-a-gale-wight-chroma1-hd-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "Chroma1-HD-fp8mixed.safetensors",
   "arm_column": "chroma1-hd-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "beta",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1319,
   "render_seconds": 7.66,
   "colour": {
    "mean_hue_deg": 44.5,
    "mean_saturation": 0.4716,
    "hue_spread_deg": 17.7,
    "resultant_R": 0.9533,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_gale_wight__chroma1-hd__768__s1319.jpg",
   "id": "foe-a-gale-wight-chroma1-hd-fp8",
   "archive_id": "foe_gale_wight__chroma1-hd__768__s1319",
   "cell_label": "",
   "at": "2026-08-23T15:47:37+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-chroma1-hd-fp8",
   "law": "cleared",
   "law_detail": "chroma1-hd (fp8mixed repack) \u2014 Apache-2.0",
   "sid": "foe-a-gale-wight-chroma1-hd-fp8"
  },
  {
   "subject": "FOE \u00b7 a gale-wight",
   "row": "",
   "column": "chroma1-hd-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall figure wrapped in stolen oilskin and flag-cloth standing balanced on a rope line in a gale, utterly still, ragged edges snapping horizontal, sea far below",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1319 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-gale-wight-chroma1-hd-fp8-bare.webp",
   "tile": "img/foe-a-gale-wight-chroma1-hd-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "Chroma1-HD-fp8mixed.safetensors",
   "arm_column": "chroma1-hd-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "beta",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1319,
   "render_seconds": 7.79,
   "colour": {
    "mean_hue_deg": 184.5,
    "mean_saturation": 0.293,
    "hue_spread_deg": 40.3,
    "resultant_R": 0.7812,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_gale_wight__chroma1-hd__768__bare__s1319.jpg",
   "id": "foe-a-gale-wight-chroma1-hd-fp8-bare",
   "archive_id": "foe_gale_wight__chroma1-hd__768__bare__s1319",
   "cell_label": "",
   "at": "2026-08-23T17:33:19+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-chroma1-hd-fp8",
   "law": "cleared",
   "law_detail": "chroma1-hd (fp8mixed repack) \u2014 Apache-2.0",
   "sid": "foe-a-gale-wight-chroma1-hd-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 a gale-wight",
   "row": "",
   "column": "krea2-turbo-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall figure wrapped in stolen oilskin and flag-cloth standing balanced on a rope line in a gale, utterly still, ragged edges snapping horizontal, sea far below",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1319 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-gale-wight-krea2-turbo-fp8.webp",
   "tile": "img/foe-a-gale-wight-krea2-turbo-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "krea2_turbo_fp8_scaled.safetensors",
   "arm_column": "krea2-turbo-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1319,
   "render_seconds": 2.1,
   "colour": {
    "mean_hue_deg": 28.5,
    "mean_saturation": 0.3936,
    "hue_spread_deg": 14.5,
    "resultant_R": 0.9685,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_gale_wight__krea2-turbo__768__s1319.jpg",
   "id": "foe-a-gale-wight-krea2-turbo-fp8",
   "archive_id": "foe_gale_wight__krea2-turbo__768__s1319",
   "cell_label": "",
   "at": "2026-08-23T15:59:00+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-krea2-turbo-fp8",
   "law": "cleared",
   "law_detail": "krea 2 turbo (fp8_scaled) \u2014 Krea 2 Community License Agreement v.1",
   "sid": "foe-a-gale-wight-krea2-turbo-fp8"
  },
  {
   "subject": "FOE \u00b7 a gale-wight",
   "row": "",
   "column": "krea2-turbo-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall figure wrapped in stolen oilskin and flag-cloth standing balanced on a rope line in a gale, utterly still, ragged edges snapping horizontal, sea far below",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1319 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-gale-wight-krea2-turbo-fp8-bare.webp",
   "tile": "img/foe-a-gale-wight-krea2-turbo-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "krea2_turbo_fp8_scaled.safetensors",
   "arm_column": "krea2-turbo-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1319,
   "render_seconds": 2.06,
   "colour": {
    "mean_hue_deg": 37.7,
    "mean_saturation": 0.2604,
    "hue_spread_deg": 58.5,
    "resultant_R": 0.5934,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_gale_wight__krea2-turbo__768__bare__s1319.jpg",
   "id": "foe-a-gale-wight-krea2-turbo-fp8-bare",
   "archive_id": "foe_gale_wight__krea2-turbo__768__bare__s1319",
   "cell_label": "",
   "at": "2026-08-23T17:36:08+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-krea2-turbo-fp8",
   "law": "cleared",
   "law_detail": "krea 2 turbo (fp8_scaled) \u2014 Krea 2 Community License Agreement v.1",
   "sid": "foe-a-gale-wight-krea2-turbo-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 a gale-wight",
   "row": "",
   "column": "mage-flow-turbo-int8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall figure wrapped in stolen oilskin and flag-cloth standing balanced on a rope line in a gale, utterly still, ragged edges snapping horizontal, sea far below",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1319 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-gale-wight-mage-flow-turbo-int8.webp",
   "tile": "img/foe-a-gale-wight-mage-flow-turbo-int8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "mage_flow_turbo_int8_convrot.safetensors",
   "arm_column": "mage-flow-turbo-int8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1319,
   "render_seconds": 0.79,
   "colour": {
    "mean_hue_deg": 37.5,
    "mean_saturation": 0.5714,
    "hue_spread_deg": 6.1,
    "resultant_R": 0.9944,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_gale_wight__mageflow-turbo__768__s1319.jpg",
   "id": "foe-a-gale-wight-mage-flow-turbo-int8",
   "archive_id": "foe_gale_wight__mageflow-turbo__768__s1319",
   "cell_label": "",
   "at": "2026-08-23T16:01:49+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-mageflow-turbo-int8",
   "law": "cleared",
   "law_detail": "mage-flow 4B turbo (int8) \u2014 MIT License",
   "sid": "foe-a-gale-wight-mage-flow-turbo-int8"
  },
  {
   "subject": "FOE \u00b7 a gale-wight",
   "row": "",
   "column": "mage-flow-turbo-int8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall figure wrapped in stolen oilskin and flag-cloth standing balanced on a rope line in a gale, utterly still, ragged edges snapping horizontal, sea far below",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1319 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-gale-wight-mage-flow-turbo-int8-bare.webp",
   "tile": "img/foe-a-gale-wight-mage-flow-turbo-int8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "mage_flow_turbo_int8_convrot.safetensors",
   "arm_column": "mage-flow-turbo-int8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1319,
   "render_seconds": 0.85,
   "colour": {
    "mean_hue_deg": 197.4,
    "mean_saturation": 0.2717,
    "hue_spread_deg": 24.9,
    "resultant_R": 0.9101,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_gale_wight__mageflow-turbo__768__bare__s1319.jpg",
   "id": "foe-a-gale-wight-mage-flow-turbo-int8-bare",
   "archive_id": "foe_gale_wight__mageflow-turbo__768__bare__s1319",
   "cell_label": "",
   "at": "2026-08-23T17:37:04+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-mageflow-turbo-int8",
   "law": "cleared",
   "law_detail": "mage-flow 4B turbo (int8) \u2014 MIT License",
   "sid": "foe-a-gale-wight-mage-flow-turbo-int8-bare"
  },
  {
   "subject": "FOE \u00b7 a gale-wight",
   "row": "",
   "column": "ernie-image-turbo-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall figure wrapped in stolen oilskin and flag-cloth standing balanced on a rope line in a gale, utterly still, ragged edges snapping horizontal, sea far below",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1319 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-gale-wight-ernie-image-turbo-bf16.webp",
   "tile": "img/foe-a-gale-wight-ernie-image-turbo-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "ernie-image-turbo.safetensors",
   "arm_column": "ernie-image-turbo-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1319,
   "render_seconds": 1.47,
   "colour": {
    "mean_hue_deg": 35.7,
    "mean_saturation": 0.557,
    "hue_spread_deg": 7.2,
    "resultant_R": 0.9922,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_gale_wight__ernie-turbo__768__s1319.jpg",
   "id": "foe-a-gale-wight-ernie-image-turbo-bf16",
   "archive_id": "foe_gale_wight__ernie-turbo__768__s1319",
   "cell_label": "",
   "at": "2026-08-23T16:03:53+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-ernie-turbo-bf16",
   "law": "cleared",
   "law_detail": "ernie-image turbo (baidu) \u2014 Apache License 2.0",
   "sid": "foe-a-gale-wight-ernie-image-turbo-bf16"
  },
  {
   "subject": "FOE \u00b7 a gale-wight",
   "row": "",
   "column": "ernie-image-turbo-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall figure wrapped in stolen oilskin and flag-cloth standing balanced on a rope line in a gale, utterly still, ragged edges snapping horizontal, sea far below",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1319 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-gale-wight-ernie-image-turbo-bf16-bare.webp",
   "tile": "img/foe-a-gale-wight-ernie-image-turbo-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "ernie-image-turbo.safetensors",
   "arm_column": "ernie-image-turbo-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1319,
   "render_seconds": 1.44,
   "colour": {
    "mean_hue_deg": 168.2,
    "mean_saturation": 0.2354,
    "hue_spread_deg": 47.5,
    "resultant_R": 0.7094,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_gale_wight__ernie-turbo__768__bare__s1319.jpg",
   "id": "foe-a-gale-wight-ernie-image-turbo-bf16-bare",
   "archive_id": "foe_gale_wight__ernie-turbo__768__bare__s1319",
   "cell_label": "",
   "at": "2026-08-23T17:38:15+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-ernie-turbo-bf16",
   "law": "cleared",
   "law_detail": "ernie-image turbo (baidu) \u2014 Apache License 2.0",
   "sid": "foe-a-gale-wight-ernie-image-turbo-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 a gale-wight",
   "row": "",
   "column": "kandinsky5-lite-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall figure wrapped in stolen oilskin and flag-cloth standing balanced on a rope line in a gale, utterly still, ragged edges snapping horizontal, sea far below",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1319 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-gale-wight-kandinsky5-lite-bf16.webp",
   "tile": "img/foe-a-gale-wight-kandinsky5-lite-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "kandinsky5lite_t2i.safetensors",
   "arm_column": "kandinsky5-lite-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1319,
   "render_seconds": 6.29,
   "colour": {
    "mean_hue_deg": 39.1,
    "mean_saturation": 0.2986,
    "hue_spread_deg": 15.3,
    "resultant_R": 0.9649,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_gale_wight__kandinsky5-lite__768__s1319.jpg",
   "id": "foe-a-gale-wight-kandinsky5-lite-bf16",
   "archive_id": "foe_gale_wight__kandinsky5-lite__768__s1319",
   "cell_label": "",
   "at": "2026-08-23T16:35:24+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/p2-kandinsky5-lite-bf16",
   "law": "cleared",
   "law_detail": "kandinsky 5.0 image lite \u2014 The MIT License (MIT)",
   "sid": "foe-a-gale-wight-kandinsky5-lite-bf16"
  },
  {
   "subject": "FOE \u00b7 a gale-wight",
   "row": "",
   "column": "kandinsky5-lite-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a tall figure wrapped in stolen oilskin and flag-cloth standing balanced on a rope line in a gale, utterly still, ragged edges snapping horizontal, sea far below",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1319 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-gale-wight-kandinsky5-lite-bf16-bare.webp",
   "tile": "img/foe-a-gale-wight-kandinsky5-lite-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "kandinsky5lite_t2i.safetensors",
   "arm_column": "kandinsky5-lite-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1319,
   "render_seconds": 6.21,
   "colour": {
    "mean_hue_deg": 212.9,
    "mean_saturation": 0.283,
    "hue_spread_deg": 26.7,
    "resultant_R": 0.8975,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_gale_wight__kandinsky5-lite__768__bare__s1319.jpg",
   "id": "foe-a-gale-wight-kandinsky5-lite-bf16-bare",
   "archive_id": "foe_gale_wight__kandinsky5-lite__768__bare__s1319",
   "cell_label": "",
   "at": "2026-08-23T17:49:27+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/p2-kandinsky5-lite-bf16",
   "law": "cleared",
   "law_detail": "kandinsky 5.0 image lite \u2014 The MIT License (MIT)",
   "sid": "foe-a-gale-wight-kandinsky5-lite-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 a tallow-shade",
   "row": "",
   "column": "z-image-turbo-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a man-tall gleaming shape of render-fat and shadow in a tallow loft, wick-threads visible within it, warm light from below through floorboards",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1320 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-tallow-shade-z-image-turbo-bf16.webp",
   "tile": "img/foe-a-tallow-shade-z-image-turbo-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_turbo_bf16.safetensors",
   "arm_column": "z-image-turbo-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1320,
   "render_seconds": 1.22,
   "colour": {
    "mean_hue_deg": 21.4,
    "mean_saturation": 0.6881,
    "hue_spread_deg": 6.1,
    "resultant_R": 0.9944,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tallow_shade__ctrl-z-image-turbo__768__s1320.jpg",
   "id": "foe-a-tallow-shade-z-image-turbo-bf16",
   "archive_id": "foe_tallow_shade__ctrl-z-image-turbo__768__s1320",
   "cell_label": "",
   "at": "2026-08-23T15:20:57+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/ctrl-z-image-turbo",
   "law": "cleared",
   "law_detail": "z-image turbo (bf16) \u2014 Apache-2.0",
   "sid": "foe-a-tallow-shade-z-image-turbo-bf16"
  },
  {
   "subject": "FOE \u00b7 a tallow-shade",
   "row": "",
   "column": "z-image-turbo-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a man-tall gleaming shape of render-fat and shadow in a tallow loft, wick-threads visible within it, warm light from below through floorboards",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1320 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-tallow-shade-z-image-turbo-bf16-bare.webp",
   "tile": "img/foe-a-tallow-shade-z-image-turbo-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_turbo_bf16.safetensors",
   "arm_column": "z-image-turbo-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1320,
   "render_seconds": 1.2,
   "colour": {
    "mean_hue_deg": 21.1,
    "mean_saturation": 0.6884,
    "hue_spread_deg": 19.4,
    "resultant_R": 0.9445,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tallow_shade__ctrl-z-image-turbo__768__bare__s1320.jpg",
   "id": "foe-a-tallow-shade-z-image-turbo-bf16-bare",
   "archive_id": "foe_tallow_shade__ctrl-z-image-turbo__768__bare__s1320",
   "cell_label": "",
   "at": "2026-08-23T17:21:45+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/ctrl-z-image-turbo",
   "law": "cleared",
   "law_detail": "z-image turbo (bf16) \u2014 Apache-2.0",
   "sid": "foe-a-tallow-shade-z-image-turbo-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 a tallow-shade",
   "row": "",
   "column": "flux2-klein-4b-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a man-tall gleaming shape of render-fat and shadow in a tallow loft, wick-threads visible within it, warm light from below through floorboards",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1320 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-tallow-shade-flux2-klein-4b-bf16.webp",
   "tile": "img/foe-a-tallow-shade-flux2-klein-4b-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "flux-2-klein-4b.safetensors",
   "arm_column": "flux2-klein-4b-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": null,
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1320,
   "render_seconds": 0.62,
   "colour": {
    "mean_hue_deg": 24.8,
    "mean_saturation": 0.5753,
    "hue_spread_deg": 8.4,
    "resultant_R": 0.9894,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tallow_shade__flux2-klein-4b__768__s1320.jpg",
   "id": "foe-a-tallow-shade-flux2-klein-4b-bf16",
   "archive_id": "foe_tallow_shade__flux2-klein-4b__768__s1320",
   "cell_label": "",
   "at": "2026-08-23T15:22:47+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-klein4b-bf16",
   "law": "cleared",
   "law_detail": "flux.2 [klein] 4B \u2014 Apache License 2.0",
   "sid": "foe-a-tallow-shade-flux2-klein-4b-bf16"
  },
  {
   "subject": "FOE \u00b7 a tallow-shade",
   "row": "",
   "column": "flux2-klein-4b-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a man-tall gleaming shape of render-fat and shadow in a tallow loft, wick-threads visible within it, warm light from below through floorboards",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1320 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-tallow-shade-flux2-klein-4b-bf16-bare.webp",
   "tile": "img/foe-a-tallow-shade-flux2-klein-4b-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "flux-2-klein-4b.safetensors",
   "arm_column": "flux2-klein-4b-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": null,
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1320,
   "render_seconds": 0.62,
   "colour": {
    "mean_hue_deg": 20.2,
    "mean_saturation": 0.7898,
    "hue_spread_deg": 20.3,
    "resultant_R": 0.939,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tallow_shade__flux2-klein-4b__768__bare__s1320.jpg",
   "id": "foe-a-tallow-shade-flux2-klein-4b-bf16-bare",
   "archive_id": "foe_tallow_shade__flux2-klein-4b__768__bare__s1320",
   "cell_label": "",
   "at": "2026-08-23T17:22:18+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-klein4b-bf16",
   "law": "cleared",
   "law_detail": "flux.2 [klein] 4B \u2014 Apache License 2.0",
   "sid": "foe-a-tallow-shade-flux2-klein-4b-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 a tallow-shade",
   "row": "",
   "column": "z-image-base-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a man-tall gleaming shape of render-fat and shadow in a tallow loft, wick-threads visible within it, warm light from below through floorboards",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1320 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-tallow-shade-z-image-base-bf16.webp",
   "tile": "img/foe-a-tallow-shade-z-image-base-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_bf16.safetensors",
   "arm_column": "z-image-base-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 4.0,
   "width": 768,
   "height": 768,
   "seed": 1320,
   "render_seconds": 7.87,
   "colour": {
    "mean_hue_deg": 31.5,
    "mean_saturation": 0.6104,
    "hue_spread_deg": 4.2,
    "resultant_R": 0.9973,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tallow_shade__z-image-base__768__s1320.jpg",
   "id": "foe-a-tallow-shade-z-image-base-bf16",
   "archive_id": "foe_tallow_shade__z-image-base__768__s1320",
   "cell_label": "",
   "at": "2026-08-23T15:29:09+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-zimage-base-bf16",
   "law": "cleared",
   "law_detail": "z-image base (undistilled) \u2014 Apache-2.0",
   "sid": "foe-a-tallow-shade-z-image-base-bf16"
  },
  {
   "subject": "FOE \u00b7 a tallow-shade",
   "row": "",
   "column": "z-image-base-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a man-tall gleaming shape of render-fat and shadow in a tallow loft, wick-threads visible within it, warm light from below through floorboards",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1320 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-tallow-shade-z-image-base-bf16-bare.webp",
   "tile": "img/foe-a-tallow-shade-z-image-base-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "z_image_bf16.safetensors",
   "arm_column": "z-image-base-bf16",
   "lora": [],
   "sampler": "res_multistep",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 4.0,
   "width": 768,
   "height": 768,
   "seed": 1320,
   "render_seconds": 7.9,
   "colour": {
    "mean_hue_deg": 20.6,
    "mean_saturation": 0.3822,
    "hue_spread_deg": 18.6,
    "resultant_R": 0.9486,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tallow_shade__z-image-base__768__bare__s1320.jpg",
   "id": "foe-a-tallow-shade-z-image-base-bf16-bare",
   "archive_id": "foe_tallow_shade__z-image-base__768__bare__s1320",
   "cell_label": "",
   "at": "2026-08-23T17:26:58+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-zimage-base-bf16",
   "law": "cleared",
   "law_detail": "z-image base (undistilled) \u2014 Apache-2.0",
   "sid": "foe-a-tallow-shade-z-image-base-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 a tallow-shade",
   "row": "",
   "column": "hidream-o1-dev-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a man-tall gleaming shape of render-fat and shadow in a tallow loft, wick-threads visible within it, warm light from below through floorboards",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1320 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-tallow-shade-hidream-o1-dev-fp8.webp",
   "tile": "img/foe-a-tallow-shade-hidream-o1-dev-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "hidream_o1_image_dev_fp8_scaled.safetensors",
   "arm_column": "hidream-o1-dev-fp8",
   "lora": [],
   "sampler": null,
   "scheduler": "normal",
   "steps": 32,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1320,
   "render_seconds": 2.52,
   "colour": {
    "mean_hue_deg": 19.9,
    "mean_saturation": 0.5023,
    "hue_spread_deg": 5.0,
    "resultant_R": 0.9963,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tallow_shade__hidream-o1-dev__768__s1320.jpg",
   "id": "foe-a-tallow-shade-hidream-o1-dev-fp8",
   "archive_id": "foe_tallow_shade__hidream-o1-dev__768__s1320",
   "cell_label": "",
   "at": "2026-08-23T15:39:09+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-hidream-o1-dev-fp8",
   "law": "cleared",
   "law_detail": "hidream-o1-image-dev \u2014 MIT",
   "sid": "foe-a-tallow-shade-hidream-o1-dev-fp8"
  },
  {
   "subject": "FOE \u00b7 a tallow-shade",
   "row": "",
   "column": "hidream-o1-dev-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a man-tall gleaming shape of render-fat and shadow in a tallow loft, wick-threads visible within it, warm light from below through floorboards",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1320 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-tallow-shade-hidream-o1-dev-fp8-bare.webp",
   "tile": "img/foe-a-tallow-shade-hidream-o1-dev-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "hidream_o1_image_dev_fp8_scaled.safetensors",
   "arm_column": "hidream-o1-dev-fp8",
   "lora": [],
   "sampler": null,
   "scheduler": "normal",
   "steps": 32,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1320,
   "render_seconds": 2.56,
   "colour": {
    "mean_hue_deg": 25.4,
    "mean_saturation": 0.4461,
    "hue_spread_deg": 20.5,
    "resultant_R": 0.9382,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tallow_shade__hidream-o1-dev__768__bare__s1320.jpg",
   "id": "foe-a-tallow-shade-hidream-o1-dev-fp8-bare",
   "archive_id": "foe_tallow_shade__hidream-o1-dev__768__bare__s1320",
   "cell_label": "",
   "at": "2026-08-23T17:28:45+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-hidream-o1-dev-fp8",
   "law": "cleared",
   "law_detail": "hidream-o1-image-dev \u2014 MIT",
   "sid": "foe-a-tallow-shade-hidream-o1-dev-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 a tallow-shade",
   "row": "",
   "column": "chroma1-hd-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a man-tall gleaming shape of render-fat and shadow in a tallow loft, wick-threads visible within it, warm light from below through floorboards",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1320 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-tallow-shade-chroma1-hd-fp8.webp",
   "tile": "img/foe-a-tallow-shade-chroma1-hd-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "Chroma1-HD-fp8mixed.safetensors",
   "arm_column": "chroma1-hd-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "beta",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1320,
   "render_seconds": 7.55,
   "colour": {
    "mean_hue_deg": 30.2,
    "mean_saturation": 0.786,
    "hue_spread_deg": 6.1,
    "resultant_R": 0.9943,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tallow_shade__chroma1-hd__768__s1320.jpg",
   "id": "foe-a-tallow-shade-chroma1-hd-fp8",
   "archive_id": "foe_tallow_shade__chroma1-hd__768__s1320",
   "cell_label": "",
   "at": "2026-08-23T15:48:08+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-chroma1-hd-fp8",
   "law": "cleared",
   "law_detail": "chroma1-hd (fp8mixed repack) \u2014 Apache-2.0",
   "sid": "foe-a-tallow-shade-chroma1-hd-fp8"
  },
  {
   "subject": "FOE \u00b7 a tallow-shade",
   "row": "",
   "column": "chroma1-hd-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a man-tall gleaming shape of render-fat and shadow in a tallow loft, wick-threads visible within it, warm light from below through floorboards",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1320 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-tallow-shade-chroma1-hd-fp8-bare.webp",
   "tile": "img/foe-a-tallow-shade-chroma1-hd-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "Chroma1-HD-fp8mixed.safetensors",
   "arm_column": "chroma1-hd-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "beta",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1320,
   "render_seconds": 7.74,
   "colour": {
    "mean_hue_deg": 29.1,
    "mean_saturation": 0.8171,
    "hue_spread_deg": 6.6,
    "resultant_R": 0.9934,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tallow_shade__chroma1-hd__768__bare__s1320.jpg",
   "id": "foe-a-tallow-shade-chroma1-hd-fp8-bare",
   "archive_id": "foe_tallow_shade__chroma1-hd__768__bare__s1320",
   "cell_label": "",
   "at": "2026-08-23T17:33:43+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-chroma1-hd-fp8",
   "law": "cleared",
   "law_detail": "chroma1-hd (fp8mixed repack) \u2014 Apache-2.0",
   "sid": "foe-a-tallow-shade-chroma1-hd-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 a tallow-shade",
   "row": "",
   "column": "krea2-turbo-fp8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a man-tall gleaming shape of render-fat and shadow in a tallow loft, wick-threads visible within it, warm light from below through floorboards",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1320 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-tallow-shade-krea2-turbo-fp8.webp",
   "tile": "img/foe-a-tallow-shade-krea2-turbo-fp8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "krea2_turbo_fp8_scaled.safetensors",
   "arm_column": "krea2-turbo-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1320,
   "render_seconds": 2.09,
   "colour": {
    "mean_hue_deg": 21.1,
    "mean_saturation": 0.5843,
    "hue_spread_deg": 5.3,
    "resultant_R": 0.9957,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tallow_shade__krea2-turbo__768__s1320.jpg",
   "id": "foe-a-tallow-shade-krea2-turbo-fp8",
   "archive_id": "foe_tallow_shade__krea2-turbo__768__s1320",
   "cell_label": "",
   "at": "2026-08-23T15:59:07+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-krea2-turbo-fp8",
   "law": "cleared",
   "law_detail": "krea 2 turbo (fp8_scaled) \u2014 Krea 2 Community License Agreement v.1",
   "sid": "foe-a-tallow-shade-krea2-turbo-fp8"
  },
  {
   "subject": "FOE \u00b7 a tallow-shade",
   "row": "",
   "column": "krea2-turbo-fp8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a man-tall gleaming shape of render-fat and shadow in a tallow loft, wick-threads visible within it, warm light from below through floorboards",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1320 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-tallow-shade-krea2-turbo-fp8-bare.webp",
   "tile": "img/foe-a-tallow-shade-krea2-turbo-fp8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "krea2_turbo_fp8_scaled.safetensors",
   "arm_column": "krea2-turbo-fp8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1320,
   "render_seconds": 2.06,
   "colour": {
    "mean_hue_deg": 17.0,
    "mean_saturation": 0.7201,
    "hue_spread_deg": 11.8,
    "resultant_R": 0.979,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tallow_shade__krea2-turbo__768__bare__s1320.jpg",
   "id": "foe-a-tallow-shade-krea2-turbo-fp8-bare",
   "archive_id": "foe_tallow_shade__krea2-turbo__768__bare__s1320",
   "cell_label": "",
   "at": "2026-08-23T17:36:14+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-krea2-turbo-fp8",
   "law": "cleared",
   "law_detail": "krea 2 turbo (fp8_scaled) \u2014 Krea 2 Community License Agreement v.1",
   "sid": "foe-a-tallow-shade-krea2-turbo-fp8-bare"
  },
  {
   "subject": "FOE \u00b7 a tallow-shade",
   "row": "",
   "column": "mage-flow-turbo-int8",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a man-tall gleaming shape of render-fat and shadow in a tallow loft, wick-threads visible within it, warm light from below through floorboards",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1320 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-tallow-shade-mage-flow-turbo-int8.webp",
   "tile": "img/foe-a-tallow-shade-mage-flow-turbo-int8.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "mage_flow_turbo_int8_convrot.safetensors",
   "arm_column": "mage-flow-turbo-int8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1320,
   "render_seconds": 0.78,
   "colour": {
    "mean_hue_deg": 26.1,
    "mean_saturation": 0.7957,
    "hue_spread_deg": 5.5,
    "resultant_R": 0.9955,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tallow_shade__mageflow-turbo__768__s1320.jpg",
   "id": "foe-a-tallow-shade-mage-flow-turbo-int8",
   "archive_id": "foe_tallow_shade__mageflow-turbo__768__s1320",
   "cell_label": "",
   "at": "2026-08-23T16:01:51+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-mageflow-turbo-int8",
   "law": "cleared",
   "law_detail": "mage-flow 4B turbo (int8) \u2014 MIT License",
   "sid": "foe-a-tallow-shade-mage-flow-turbo-int8"
  },
  {
   "subject": "FOE \u00b7 a tallow-shade",
   "row": "",
   "column": "mage-flow-turbo-int8\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a man-tall gleaming shape of render-fat and shadow in a tallow loft, wick-threads visible within it, warm light from below through floorboards",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1320 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-tallow-shade-mage-flow-turbo-int8-bare.webp",
   "tile": "img/foe-a-tallow-shade-mage-flow-turbo-int8-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "mage_flow_turbo_int8_convrot.safetensors",
   "arm_column": "mage-flow-turbo-int8",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 4,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1320,
   "render_seconds": 0.83,
   "colour": {
    "mean_hue_deg": 29.9,
    "mean_saturation": 0.6332,
    "hue_spread_deg": 5.2,
    "resultant_R": 0.9959,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tallow_shade__mageflow-turbo__768__bare__s1320.jpg",
   "id": "foe-a-tallow-shade-mage-flow-turbo-int8-bare",
   "archive_id": "foe_tallow_shade__mageflow-turbo__768__bare__s1320",
   "cell_label": "",
   "at": "2026-08-23T17:37:07+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-mageflow-turbo-int8",
   "law": "cleared",
   "law_detail": "mage-flow 4B turbo (int8) \u2014 MIT License",
   "sid": "foe-a-tallow-shade-mage-flow-turbo-int8-bare"
  },
  {
   "subject": "FOE \u00b7 a tallow-shade",
   "row": "",
   "column": "ernie-image-turbo-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a man-tall gleaming shape of render-fat and shadow in a tallow loft, wick-threads visible within it, warm light from below through floorboards",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1320 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-tallow-shade-ernie-image-turbo-bf16.webp",
   "tile": "img/foe-a-tallow-shade-ernie-image-turbo-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "ernie-image-turbo.safetensors",
   "arm_column": "ernie-image-turbo-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1320,
   "render_seconds": 1.47,
   "colour": {
    "mean_hue_deg": 27.4,
    "mean_saturation": 0.7915,
    "hue_spread_deg": 4.4,
    "resultant_R": 0.997,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tallow_shade__ernie-turbo__768__s1320.jpg",
   "id": "foe-a-tallow-shade-ernie-image-turbo-bf16",
   "archive_id": "foe_tallow_shade__ernie-turbo__768__s1320",
   "cell_label": "",
   "at": "2026-08-23T16:03:57+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-ernie-turbo-bf16",
   "law": "cleared",
   "law_detail": "ernie-image turbo (baidu) \u2014 Apache License 2.0",
   "sid": "foe-a-tallow-shade-ernie-image-turbo-bf16"
  },
  {
   "subject": "FOE \u00b7 a tallow-shade",
   "row": "",
   "column": "ernie-image-turbo-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a man-tall gleaming shape of render-fat and shadow in a tallow loft, wick-threads visible within it, warm light from below through floorboards",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1320 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-tallow-shade-ernie-image-turbo-bf16-bare.webp",
   "tile": "img/foe-a-tallow-shade-ernie-image-turbo-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "ernie-image-turbo.safetensors",
   "arm_column": "ernie-image-turbo-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 8,
   "cfg": 1.0,
   "width": 768,
   "height": 768,
   "seed": 1320,
   "render_seconds": 1.45,
   "colour": {
    "mean_hue_deg": 28.3,
    "mean_saturation": 0.768,
    "hue_spread_deg": 8.6,
    "resultant_R": 0.9889,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tallow_shade__ernie-turbo__768__bare__s1320.jpg",
   "id": "foe-a-tallow-shade-ernie-image-turbo-bf16-bare",
   "archive_id": "foe_tallow_shade__ernie-turbo__768__bare__s1320",
   "cell_label": "",
   "at": "2026-08-23T17:38:20+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/wave1-ernie-turbo-bf16",
   "law": "cleared",
   "law_detail": "ernie-image turbo (baidu) \u2014 Apache License 2.0",
   "sid": "foe-a-tallow-shade-ernie-image-turbo-bf16-bare"
  },
  {
   "subject": "FOE \u00b7 a tallow-shade",
   "row": "",
   "column": "kandinsky5-lite-bf16",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a man-tall gleaming shape of render-fat and shadow in a tallow loft, wick-threads visible within it, warm light from below through floorboards",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1320 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-tallow-shade-kandinsky5-lite-bf16.webp",
   "tile": "img/foe-a-tallow-shade-kandinsky5-lite-bf16.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "kandinsky5lite_t2i.safetensors",
   "arm_column": "kandinsky5-lite-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1320,
   "render_seconds": 6.45,
   "colour": {
    "mean_hue_deg": 23.5,
    "mean_saturation": 0.7119,
    "hue_spread_deg": 4.2,
    "resultant_R": 0.9974,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tallow_shade__kandinsky5-lite__768__s1320.jpg",
   "id": "foe-a-tallow-shade-kandinsky5-lite-bf16",
   "archive_id": "foe_tallow_shade__kandinsky5-lite__768__s1320",
   "cell_label": "",
   "at": "2026-08-23T16:35:43+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/p2-kandinsky5-lite-bf16",
   "law": "cleared",
   "law_detail": "kandinsky 5.0 image lite \u2014 The MIT License (MIT)",
   "sid": "foe-a-tallow-shade-kandinsky5-lite-bf16"
  },
  {
   "subject": "FOE \u00b7 a tallow-shade",
   "row": "",
   "column": "kandinsky5-lite-bf16\u00b7bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. a man-tall gleaming shape of render-fat and shadow in a tallow loft, wick-threads visible within it, warm light from below through floorboards",
   "prompt_source": "foe `art.prompt_seed` VERBATIM from content/sorrowmoor-cove/foes.yml at master tip; composed as ArtService.portraitAsk (ArtService.java:2256) composes a FOE portrait \u2014 `art.style`. <prompt_seed> \u2014 the house style clause and the subject, and NO place clause (a foe is not a place; place_style never enters a portrait ask). Assembled by hand from the campaign source, not captured from a running engine. House clause: art.style. Seed 1320 is fixed for this foe across every model, size and family. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_foes-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/foe-a-tallow-shade-kandinsky5-lite-bf16-bare.webp",
   "tile": "img/foe-a-tallow-shade-kandinsky5-lite-bf16-bare.webp",
   "shown_width": 768,
   "shown_height": 768,
   "checkpoint": "kandinsky5lite_t2i.safetensors",
   "arm_column": "kandinsky5-lite-bf16",
   "lora": [],
   "sampler": "euler",
   "scheduler": "simple",
   "steps": 32,
   "cfg": 3.5,
   "width": 768,
   "height": 768,
   "seed": 1320,
   "render_seconds": 6.22,
   "colour": {
    "mean_hue_deg": 25.0,
    "mean_saturation": 0.4833,
    "hue_spread_deg": 21.6,
    "resultant_R": 0.9315,
    "n_px": 16384,
    "method": "mean hue = saturation-weighted CIRCULAR mean of per-pixel HSV hue, in degrees (atan2(sum s*sin h, sum s*cos h)); mean saturation = arithmetic mean of s in [0,1]; hue spread = circular std-dev sqrt(-2 ln R) in degrees, R = |sum s*e^(ih)| / sum s. Computed on the kit's own JPEG resampled to 128x128 (LANCZOS), HSV via Pillow. Circular because hue wraps; saturation-weighted because a grey pixel has no hue to vote with."
   },
   "measured": true,
   "origin": "keel \u00b7 the bench render archive",
   "master": "foe_tallow_shade__kandinsky5-lite__768__bare__s1320.jpg",
   "id": "foe-a-tallow-shade-kandinsky5-lite-bf16-bare",
   "archive_id": "foe_tallow_shade__kandinsky5-lite__768__bare__s1320",
   "cell_label": "",
   "at": "2026-08-23T17:49:46+00:00",
   "machine": "keel (96G VRAM workstation)",
   "workflow": "diffusion-0823/p2-kandinsky5-lite-bf16",
   "law": "cleared",
   "law_detail": "kandinsky 5.0 image lite \u2014 The MIT License (MIT)",
   "sid": "foe-a-tallow-shade-kandinsky5-lite-bf16-bare"
  }
 ]
}
