{
 "experiment": "colour-hidream-o1-dev",
 "title": "the colour question \u2014 hidream-o1-dev-fp8",
 "compares": "the style clause",
 "archive": "diffusion-bench-0823_styleclause-768_hidream-o1-dev",
 "columns": [
  "A shipped",
  "B no-amber",
  "C medium-only",
  "D full-range",
  "E storybook-clear",
  "F bare"
 ],
 "lede": "six style clauses, the same six subjects, the same seed, one painter. the shipped clause asks for \"warm amber glow\" and every painter obliges \u2014 this table shows what the same painter does when the words change. under each cell: the mean hue and saturation; under each row: how far apart the six subjects sit in hue \u2014 the \"everything looks the same\" number, measured.",
 "note": "clause F is the bare control: it drops the whole style clause, and with it the no-signature guard tail the other five carry. a signature or a watermark that appears only in that column is the missing guard, not the painter's taste.",
 "source": "render-tests",
 "tests": [],
 "internal": false,
 "images": [
  {
   "subject": "FOE \u00b7 the Drowned-Hand",
   "row": "",
   "column": "A shipped",
   "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-the-drowned-hand-a-shipped.webp",
   "tile": "img/foe-the-drowned-hand-a-shipped.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": "hidream-o1-dev__foe_drowned_hand__A__s1301.jpg",
   "id": "foe-the-drowned-hand-a-shipped",
   "archive_id": "hidream-o1-dev__foe_drowned_hand__A__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-the-drowned-hand-a-shipped"
  },
  {
   "subject": "FOE \u00b7 the Drowned-Hand",
   "row": "",
   "column": "B no-amber",
   "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-the-drowned-hand-b-no-amber.webp",
   "tile": "img/foe-the-drowned-hand-b-no-amber.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": 5.75,
   "colour": {
    "mean_hue_deg": 54.7,
    "mean_saturation": 0.149,
    "hue_spread_deg": 81.3,
    "resultant_R": 0.3658,
    "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": "hidream-o1-dev__foe_drowned_hand__B__s1301.jpg",
   "id": "foe-the-drowned-hand-b-no-amber",
   "archive_id": "hidream-o1-dev__foe_drowned_hand__B__s1301",
   "cell_label": "",
   "at": "2026-08-23T16:45:19+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-drowned-hand-b-no-amber"
  },
  {
   "subject": "FOE \u00b7 the Drowned-Hand",
   "row": "",
   "column": "C medium-only",
   "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-the-drowned-hand-c-medium-only.webp",
   "tile": "img/foe-the-drowned-hand-c-medium-only.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.44,
   "colour": {
    "mean_hue_deg": 53.6,
    "mean_saturation": 0.1337,
    "hue_spread_deg": 61.6,
    "resultant_R": 0.5611,
    "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": "hidream-o1-dev__foe_drowned_hand__C__s1301.jpg",
   "id": "foe-the-drowned-hand-c-medium-only",
   "archive_id": "hidream-o1-dev__foe_drowned_hand__C__s1301",
   "cell_label": "",
   "at": "2026-08-23T16:45:27+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-drowned-hand-c-medium-only"
  },
  {
   "subject": "FOE \u00b7 the Drowned-Hand",
   "row": "",
   "column": "D full-range",
   "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-the-drowned-hand-d-full-range.webp",
   "tile": "img/foe-the-drowned-hand-d-full-range.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.4,
   "colour": {
    "mean_hue_deg": 72.2,
    "mean_saturation": 0.1231,
    "hue_spread_deg": 96.6,
    "resultant_R": 0.2417,
    "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": "hidream-o1-dev__foe_drowned_hand__D__s1301.jpg",
   "id": "foe-the-drowned-hand-d-full-range",
   "archive_id": "hidream-o1-dev__foe_drowned_hand__D__s1301",
   "cell_label": "",
   "at": "2026-08-23T16:45:34+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-drowned-hand-d-full-range"
  },
  {
   "subject": "FOE \u00b7 the Drowned-Hand",
   "row": "",
   "column": "E storybook-clear",
   "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-the-drowned-hand-e-storybook-clear.webp",
   "tile": "img/foe-the-drowned-hand-e-storybook-clear.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": 51.0,
    "mean_saturation": 0.1341,
    "hue_spread_deg": 74.9,
    "resultant_R": 0.4257,
    "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": "hidream-o1-dev__foe_drowned_hand__E__s1301.jpg",
   "id": "foe-the-drowned-hand-e-storybook-clear",
   "archive_id": "hidream-o1-dev__foe_drowned_hand__E__s1301",
   "cell_label": "",
   "at": "2026-08-23T16:45:42+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-drowned-hand-e-storybook-clear"
  },
  {
   "subject": "FOE \u00b7 the Drowned-Hand",
   "row": "",
   "column": "F bare",
   "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-the-drowned-hand-f-bare.webp",
   "tile": "img/foe-the-drowned-hand-f-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": "hidream-o1-dev__foe_drowned_hand__F__s1301.jpg",
   "id": "foe-the-drowned-hand-f-bare",
   "archive_id": "hidream-o1-dev__foe_drowned_hand__F__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-the-drowned-hand-f-bare"
  },
  {
   "subject": "FOE \u00b7 the Salt-Father",
   "row": "",
   "column": "A shipped",
   "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-the-salt-father-a-shipped.webp",
   "tile": "img/foe-the-salt-father-a-shipped.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": "hidream-o1-dev__foe_salt_father__A__s1302.jpg",
   "id": "foe-the-salt-father-a-shipped",
   "archive_id": "hidream-o1-dev__foe_salt_father__A__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-the-salt-father-a-shipped"
  },
  {
   "subject": "FOE \u00b7 the Salt-Father",
   "row": "",
   "column": "B no-amber",
   "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-the-salt-father-b-no-amber.webp",
   "tile": "img/foe-the-salt-father-b-no-amber.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.41,
   "colour": {
    "mean_hue_deg": 36.6,
    "mean_saturation": 0.1856,
    "hue_spread_deg": 34.2,
    "resultant_R": 0.8366,
    "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": "hidream-o1-dev__foe_salt_father__B__s1302.jpg",
   "id": "foe-the-salt-father-b-no-amber",
   "archive_id": "hidream-o1-dev__foe_salt_father__B__s1302",
   "cell_label": "",
   "at": "2026-08-23T16:45:57+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-salt-father-b-no-amber"
  },
  {
   "subject": "FOE \u00b7 the Salt-Father",
   "row": "",
   "column": "C medium-only",
   "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-the-salt-father-c-medium-only.webp",
   "tile": "img/foe-the-salt-father-c-medium-only.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.41,
   "colour": {
    "mean_hue_deg": 3.7,
    "mean_saturation": 0.1958,
    "hue_spread_deg": 42.0,
    "resultant_R": 0.7643,
    "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": "hidream-o1-dev__foe_salt_father__C__s1302.jpg",
   "id": "foe-the-salt-father-c-medium-only",
   "archive_id": "hidream-o1-dev__foe_salt_father__C__s1302",
   "cell_label": "",
   "at": "2026-08-23T16:46:05+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-salt-father-c-medium-only"
  },
  {
   "subject": "FOE \u00b7 the Salt-Father",
   "row": "",
   "column": "D full-range",
   "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-the-salt-father-d-full-range.webp",
   "tile": "img/foe-the-salt-father-d-full-range.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": 354.6,
    "mean_saturation": 0.1638,
    "hue_spread_deg": 64.6,
    "resultant_R": 0.5295,
    "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": "hidream-o1-dev__foe_salt_father__D__s1302.jpg",
   "id": "foe-the-salt-father-d-full-range",
   "archive_id": "hidream-o1-dev__foe_salt_father__D__s1302",
   "cell_label": "",
   "at": "2026-08-23T16:46: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-the-salt-father-d-full-range"
  },
  {
   "subject": "FOE \u00b7 the Salt-Father",
   "row": "",
   "column": "E storybook-clear",
   "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-the-salt-father-e-storybook-clear.webp",
   "tile": "img/foe-the-salt-father-e-storybook-clear.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": 21.5,
    "mean_saturation": 0.186,
    "hue_spread_deg": 31.9,
    "resultant_R": 0.8567,
    "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": "hidream-o1-dev__foe_salt_father__E__s1302.jpg",
   "id": "foe-the-salt-father-e-storybook-clear",
   "archive_id": "hidream-o1-dev__foe_salt_father__E__s1302",
   "cell_label": "",
   "at": "2026-08-23T16:46: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-salt-father-e-storybook-clear"
  },
  {
   "subject": "FOE \u00b7 the Salt-Father",
   "row": "",
   "column": "F bare",
   "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-the-salt-father-f-bare.webp",
   "tile": "img/foe-the-salt-father-f-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": "hidream-o1-dev__foe_salt_father__F__s1302.jpg",
   "id": "foe-the-salt-father-f-bare",
   "archive_id": "hidream-o1-dev__foe_salt_father__F__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-the-salt-father-f-bare"
  },
  {
   "subject": "COASTAL \u00b7 Sorrowmoor Cove \u2014 The First Run",
   "row": "",
   "column": "A shipped",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, a scene composition, unsigned, no text, no letters, no signature, no watermark. REGION VIGNETTE: the whole fleet hauled up nose-to-sea on the shingle before dawn, forty boats in a line, one berth mid-row left empty with its chocks still set. salt-light on wet stone, sea-fog greys, a gull-grey sky, rope and tar",
   "prompt_source": "region.sorrowmoor_cove art image \u201cThe First Run\u201d, subject verbatim; terrain: coastal \u2192 art.place_style[coastal]. Composed as ArtService.attachRegionArt (ArtService.java:2064) \u2192 assembleArtPrompt(region_style, art_prompt_seed=absent, subject, \u201cREGION VIGNETTE\u201d, place_style). 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). Assembled by hand from the campaign source, not captured from a running engine. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_regions-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/coastal-sorrowmoor-cove-the-first-run-a-shipped.webp",
   "tile": "img/coastal-sorrowmoor-cove-the-first-run-a-shipped.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": 1101,
   "render_seconds": 2.53,
   "colour": {
    "mean_hue_deg": 24.6,
    "mean_saturation": 0.2311,
    "hue_spread_deg": 28.4,
    "resultant_R": 0.8843,
    "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": "hidream-o1-dev__scene_sorrowmoor_cove__A__s1101.jpg",
   "id": "coastal-sorrowmoor-cove-the-first-run-a-shipped",
   "archive_id": "hidream-o1-dev__scene_sorrowmoor_cove__A__s1101",
   "cell_label": "",
   "at": "2026-08-23T11:22:21+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": "coastal-sorrowmoor-cove-the-first-run-a-shipped"
  },
  {
   "subject": "COASTAL \u00b7 Sorrowmoor Cove \u2014 The First Run",
   "row": "",
   "column": "B no-amber",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, a scene composition, unsigned, no text, no letters, no signature, no watermark. REGION VIGNETTE: the whole fleet hauled up nose-to-sea on the shingle before dawn, forty boats in a line, one berth mid-row left empty with its chocks still set. salt-light on wet stone, sea-fog greys, a gull-grey sky, rope and tar",
   "prompt_source": "region.sorrowmoor_cove art image \u201cThe First Run\u201d, subject verbatim; terrain: coastal \u2192 art.place_style[coastal]. Composed as ArtService.attachRegionArt (ArtService.java:2064) \u2192 assembleArtPrompt(region_style, art_prompt_seed=absent, subject, \u201cREGION VIGNETTE\u201d, place_style). 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). Assembled by hand from the campaign source, not captured from a running engine. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_regions-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/coastal-sorrowmoor-cove-the-first-run-b-no-amber.webp",
   "tile": "img/coastal-sorrowmoor-cove-the-first-run-b-no-amber.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": 1101,
   "render_seconds": 2.45,
   "colour": {
    "mean_hue_deg": 20.7,
    "mean_saturation": 0.1755,
    "hue_spread_deg": 47.5,
    "resultant_R": 0.709,
    "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": "hidream-o1-dev__scene_sorrowmoor_cove__B__s1101.jpg",
   "id": "coastal-sorrowmoor-cove-the-first-run-b-no-amber",
   "archive_id": "hidream-o1-dev__scene_sorrowmoor_cove__B__s1101",
   "cell_label": "",
   "at": "2026-08-23T16:46:35+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": "coastal-sorrowmoor-cove-the-first-run-b-no-amber"
  },
  {
   "subject": "COASTAL \u00b7 Sorrowmoor Cove \u2014 The First Run",
   "row": "",
   "column": "C medium-only",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, a scene composition, unsigned, no text, no letters, no signature, no watermark. REGION VIGNETTE: the whole fleet hauled up nose-to-sea on the shingle before dawn, forty boats in a line, one berth mid-row left empty with its chocks still set. salt-light on wet stone, sea-fog greys, a gull-grey sky, rope and tar",
   "prompt_source": "region.sorrowmoor_cove art image \u201cThe First Run\u201d, subject verbatim; terrain: coastal \u2192 art.place_style[coastal]. Composed as ArtService.attachRegionArt (ArtService.java:2064) \u2192 assembleArtPrompt(region_style, art_prompt_seed=absent, subject, \u201cREGION VIGNETTE\u201d, place_style). 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). Assembled by hand from the campaign source, not captured from a running engine. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_regions-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/coastal-sorrowmoor-cove-the-first-run-c-medium-only.webp",
   "tile": "img/coastal-sorrowmoor-cove-the-first-run-c-medium-only.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": 1101,
   "render_seconds": 2.48,
   "colour": {
    "mean_hue_deg": 39.7,
    "mean_saturation": 0.1196,
    "hue_spread_deg": 74.7,
    "resultant_R": 0.4274,
    "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": "hidream-o1-dev__scene_sorrowmoor_cove__C__s1101.jpg",
   "id": "coastal-sorrowmoor-cove-the-first-run-c-medium-only",
   "archive_id": "hidream-o1-dev__scene_sorrowmoor_cove__C__s1101",
   "cell_label": "",
   "at": "2026-08-23T16:46:43+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": "coastal-sorrowmoor-cove-the-first-run-c-medium-only"
  },
  {
   "subject": "COASTAL \u00b7 Sorrowmoor Cove \u2014 The First Run",
   "row": "",
   "column": "D full-range",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, a scene composition, unsigned, no text, no letters, no signature, no watermark. REGION VIGNETTE: the whole fleet hauled up nose-to-sea on the shingle before dawn, forty boats in a line, one berth mid-row left empty with its chocks still set. salt-light on wet stone, sea-fog greys, a gull-grey sky, rope and tar",
   "prompt_source": "region.sorrowmoor_cove art image \u201cThe First Run\u201d, subject verbatim; terrain: coastal \u2192 art.place_style[coastal]. Composed as ArtService.attachRegionArt (ArtService.java:2064) \u2192 assembleArtPrompt(region_style, art_prompt_seed=absent, subject, \u201cREGION VIGNETTE\u201d, place_style). 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). Assembled by hand from the campaign source, not captured from a running engine. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_regions-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/coastal-sorrowmoor-cove-the-first-run-d-full-range.webp",
   "tile": "img/coastal-sorrowmoor-cove-the-first-run-d-full-range.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": 1101,
   "render_seconds": 2.46,
   "colour": {
    "mean_hue_deg": 227.0,
    "mean_saturation": 0.1144,
    "hue_spread_deg": 113.2,
    "resultant_R": 0.1421,
    "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": "hidream-o1-dev__scene_sorrowmoor_cove__D__s1101.jpg",
   "id": "coastal-sorrowmoor-cove-the-first-run-d-full-range",
   "archive_id": "hidream-o1-dev__scene_sorrowmoor_cove__D__s1101",
   "cell_label": "",
   "at": "2026-08-23T16:46:51+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": "coastal-sorrowmoor-cove-the-first-run-d-full-range"
  },
  {
   "subject": "COASTAL \u00b7 Sorrowmoor Cove \u2014 The First Run",
   "row": "",
   "column": "E storybook-clear",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, a scene composition, unsigned, no text, no letters, no signature, no watermark. REGION VIGNETTE: the whole fleet hauled up nose-to-sea on the shingle before dawn, forty boats in a line, one berth mid-row left empty with its chocks still set. salt-light on wet stone, sea-fog greys, a gull-grey sky, rope and tar",
   "prompt_source": "region.sorrowmoor_cove art image \u201cThe First Run\u201d, subject verbatim; terrain: coastal \u2192 art.place_style[coastal]. Composed as ArtService.attachRegionArt (ArtService.java:2064) \u2192 assembleArtPrompt(region_style, art_prompt_seed=absent, subject, \u201cREGION VIGNETTE\u201d, place_style). 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). Assembled by hand from the campaign source, not captured from a running engine. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_regions-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/coastal-sorrowmoor-cove-the-first-run-e-storybook-clear.webp",
   "tile": "img/coastal-sorrowmoor-cove-the-first-run-e-storybook-clear.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": 1101,
   "render_seconds": 2.45,
   "colour": {
    "mean_hue_deg": 28.2,
    "mean_saturation": 0.1328,
    "hue_spread_deg": 70.3,
    "resultant_R": 0.4706,
    "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": "hidream-o1-dev__scene_sorrowmoor_cove__E__s1101.jpg",
   "id": "coastal-sorrowmoor-cove-the-first-run-e-storybook-clear",
   "archive_id": "hidream-o1-dev__scene_sorrowmoor_cove__E__s1101",
   "cell_label": "",
   "at": "2026-08-23T16:46: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": "coastal-sorrowmoor-cove-the-first-run-e-storybook-clear"
  },
  {
   "subject": "COASTAL \u00b7 Sorrowmoor Cove \u2014 The First Run",
   "row": "",
   "column": "F bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, a scene composition, unsigned, no text, no letters, no signature, no watermark. REGION VIGNETTE: the whole fleet hauled up nose-to-sea on the shingle before dawn, forty boats in a line, one berth mid-row left empty with its chocks still set. salt-light on wet stone, sea-fog greys, a gull-grey sky, rope and tar",
   "prompt_source": "region.sorrowmoor_cove art image \u201cThe First Run\u201d, subject verbatim; terrain: coastal \u2192 art.place_style[coastal]. Composed as ArtService.attachRegionArt (ArtService.java:2064) \u2192 assembleArtPrompt(region_style, art_prompt_seed=absent, subject, \u201cREGION VIGNETTE\u201d, place_style). 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). Assembled by hand from the campaign source, not captured from a running engine. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_regions-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/coastal-sorrowmoor-cove-the-first-run-f-bare.webp",
   "tile": "img/coastal-sorrowmoor-cove-the-first-run-f-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": 1101,
   "render_seconds": 2.44,
   "colour": {
    "mean_hue_deg": 214.7,
    "mean_saturation": 0.1185,
    "hue_spread_deg": 53.9,
    "resultant_R": 0.6424,
    "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": "hidream-o1-dev__scene_sorrowmoor_cove__F__s1101.jpg",
   "id": "coastal-sorrowmoor-cove-the-first-run-f-bare",
   "archive_id": "hidream-o1-dev__scene_sorrowmoor_cove__F__s1101",
   "cell_label": "",
   "at": "2026-08-23T16:47:06+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": "coastal-sorrowmoor-cove-the-first-run-f-bare"
  },
  {
   "subject": "INLAND \u00b7 The Fold \u2014 The Failing Dyke",
   "row": "",
   "column": "A shipped",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, a scene composition, unsigned, no text, no letters, no signature, no watermark. REGION VIGNETTE: a long turf dyke-bank under a grey sky, one dark seep weeping down its seaward face, a single worn path along the crest. hearth-smoke and wet earth, willow-green against flint, low cloud, cart-ruts",
   "prompt_source": "region.the_fold art image \u201cThe Failing Dyke\u201d, subject verbatim; terrain: inland \u2192 art.place_style[inland]. Composed as ArtService.attachRegionArt (ArtService.java:2064) \u2192 assembleArtPrompt(region_style, art_prompt_seed=absent, subject, \u201cREGION VIGNETTE\u201d, place_style). 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). Assembled by hand from the campaign source, not captured from a running engine. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_regions-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/inland-the-fold-the-failing-dyke-a-shipped.webp",
   "tile": "img/inland-the-fold-the-failing-dyke-a-shipped.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": 1105,
   "render_seconds": 2.45,
   "colour": {
    "mean_hue_deg": 38.2,
    "mean_saturation": 0.2597,
    "hue_spread_deg": 17.3,
    "resultant_R": 0.9553,
    "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": "hidream-o1-dev__scene_the_fold__A__s1105.jpg",
   "id": "inland-the-fold-the-failing-dyke-a-shipped",
   "archive_id": "hidream-o1-dev__scene_the_fold__A__s1105",
   "cell_label": "",
   "at": "2026-08-23T11:22: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": "inland-the-fold-the-failing-dyke-a-shipped"
  },
  {
   "subject": "INLAND \u00b7 The Fold \u2014 The Failing Dyke",
   "row": "",
   "column": "B no-amber",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, a scene composition, unsigned, no text, no letters, no signature, no watermark. REGION VIGNETTE: a long turf dyke-bank under a grey sky, one dark seep weeping down its seaward face, a single worn path along the crest. hearth-smoke and wet earth, willow-green against flint, low cloud, cart-ruts",
   "prompt_source": "region.the_fold art image \u201cThe Failing Dyke\u201d, subject verbatim; terrain: inland \u2192 art.place_style[inland]. Composed as ArtService.attachRegionArt (ArtService.java:2064) \u2192 assembleArtPrompt(region_style, art_prompt_seed=absent, subject, \u201cREGION VIGNETTE\u201d, place_style). 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). Assembled by hand from the campaign source, not captured from a running engine. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_regions-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/inland-the-fold-the-failing-dyke-b-no-amber.webp",
   "tile": "img/inland-the-fold-the-failing-dyke-b-no-amber.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": 1105,
   "render_seconds": 2.44,
   "colour": {
    "mean_hue_deg": 47.8,
    "mean_saturation": 0.1924,
    "hue_spread_deg": 30.9,
    "resultant_R": 0.8647,
    "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": "hidream-o1-dev__scene_the_fold__B__s1105.jpg",
   "id": "inland-the-fold-the-failing-dyke-b-no-amber",
   "archive_id": "hidream-o1-dev__scene_the_fold__B__s1105",
   "cell_label": "",
   "at": "2026-08-23T16:47: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": "inland-the-fold-the-failing-dyke-b-no-amber"
  },
  {
   "subject": "INLAND \u00b7 The Fold \u2014 The Failing Dyke",
   "row": "",
   "column": "C medium-only",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, a scene composition, unsigned, no text, no letters, no signature, no watermark. REGION VIGNETTE: a long turf dyke-bank under a grey sky, one dark seep weeping down its seaward face, a single worn path along the crest. hearth-smoke and wet earth, willow-green against flint, low cloud, cart-ruts",
   "prompt_source": "region.the_fold art image \u201cThe Failing Dyke\u201d, subject verbatim; terrain: inland \u2192 art.place_style[inland]. Composed as ArtService.attachRegionArt (ArtService.java:2064) \u2192 assembleArtPrompt(region_style, art_prompt_seed=absent, subject, \u201cREGION VIGNETTE\u201d, place_style). 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). Assembled by hand from the campaign source, not captured from a running engine. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_regions-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/inland-the-fold-the-failing-dyke-c-medium-only.webp",
   "tile": "img/inland-the-fold-the-failing-dyke-c-medium-only.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": 1105,
   "render_seconds": 2.44,
   "colour": {
    "mean_hue_deg": 50.2,
    "mean_saturation": 0.2094,
    "hue_spread_deg": 33.2,
    "resultant_R": 0.8454,
    "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": "hidream-o1-dev__scene_the_fold__C__s1105.jpg",
   "id": "inland-the-fold-the-failing-dyke-c-medium-only",
   "archive_id": "hidream-o1-dev__scene_the_fold__C__s1105",
   "cell_label": "",
   "at": "2026-08-23T16:47: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": "inland-the-fold-the-failing-dyke-c-medium-only"
  },
  {
   "subject": "INLAND \u00b7 The Fold \u2014 The Failing Dyke",
   "row": "",
   "column": "D full-range",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, a scene composition, unsigned, no text, no letters, no signature, no watermark. REGION VIGNETTE: a long turf dyke-bank under a grey sky, one dark seep weeping down its seaward face, a single worn path along the crest. hearth-smoke and wet earth, willow-green against flint, low cloud, cart-ruts",
   "prompt_source": "region.the_fold art image \u201cThe Failing Dyke\u201d, subject verbatim; terrain: inland \u2192 art.place_style[inland]. Composed as ArtService.attachRegionArt (ArtService.java:2064) \u2192 assembleArtPrompt(region_style, art_prompt_seed=absent, subject, \u201cREGION VIGNETTE\u201d, place_style). 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). Assembled by hand from the campaign source, not captured from a running engine. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_regions-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/inland-the-fold-the-failing-dyke-d-full-range.webp",
   "tile": "img/inland-the-fold-the-failing-dyke-d-full-range.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": 1105,
   "render_seconds": 2.44,
   "colour": {
    "mean_hue_deg": 52.4,
    "mean_saturation": 0.1743,
    "hue_spread_deg": 51.7,
    "resultant_R": 0.6659,
    "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": "hidream-o1-dev__scene_the_fold__D__s1105.jpg",
   "id": "inland-the-fold-the-failing-dyke-d-full-range",
   "archive_id": "hidream-o1-dev__scene_the_fold__D__s1105",
   "cell_label": "",
   "at": "2026-08-23T16:47: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": "inland-the-fold-the-failing-dyke-d-full-range"
  },
  {
   "subject": "INLAND \u00b7 The Fold \u2014 The Failing Dyke",
   "row": "",
   "column": "E storybook-clear",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, a scene composition, unsigned, no text, no letters, no signature, no watermark. REGION VIGNETTE: a long turf dyke-bank under a grey sky, one dark seep weeping down its seaward face, a single worn path along the crest. hearth-smoke and wet earth, willow-green against flint, low cloud, cart-ruts",
   "prompt_source": "region.the_fold art image \u201cThe Failing Dyke\u201d, subject verbatim; terrain: inland \u2192 art.place_style[inland]. Composed as ArtService.attachRegionArt (ArtService.java:2064) \u2192 assembleArtPrompt(region_style, art_prompt_seed=absent, subject, \u201cREGION VIGNETTE\u201d, place_style). 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). Assembled by hand from the campaign source, not captured from a running engine. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_regions-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/inland-the-fold-the-failing-dyke-e-storybook-clear.webp",
   "tile": "img/inland-the-fold-the-failing-dyke-e-storybook-clear.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": 1105,
   "render_seconds": 2.47,
   "colour": {
    "mean_hue_deg": 50.1,
    "mean_saturation": 0.1875,
    "hue_spread_deg": 39.0,
    "resultant_R": 0.7933,
    "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": "hidream-o1-dev__scene_the_fold__E__s1105.jpg",
   "id": "inland-the-fold-the-failing-dyke-e-storybook-clear",
   "archive_id": "hidream-o1-dev__scene_the_fold__E__s1105",
   "cell_label": "",
   "at": "2026-08-23T16:47: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": "inland-the-fold-the-failing-dyke-e-storybook-clear"
  },
  {
   "subject": "INLAND \u00b7 The Fold \u2014 The Failing Dyke",
   "row": "",
   "column": "F bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, a scene composition, unsigned, no text, no letters, no signature, no watermark. REGION VIGNETTE: a long turf dyke-bank under a grey sky, one dark seep weeping down its seaward face, a single worn path along the crest. hearth-smoke and wet earth, willow-green against flint, low cloud, cart-ruts",
   "prompt_source": "region.the_fold art image \u201cThe Failing Dyke\u201d, subject verbatim; terrain: inland \u2192 art.place_style[inland]. Composed as ArtService.attachRegionArt (ArtService.java:2064) \u2192 assembleArtPrompt(region_style, art_prompt_seed=absent, subject, \u201cREGION VIGNETTE\u201d, place_style). 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). Assembled by hand from the campaign source, not captured from a running engine. | REUSED by the phase-2 family builder \u2014 NOT re-rendered: this is the same render diffusion-bench-0823_regions-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/inland-the-fold-the-failing-dyke-f-bare.webp",
   "tile": "img/inland-the-fold-the-failing-dyke-f-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": 1105,
   "render_seconds": 2.46,
   "colour": {
    "mean_hue_deg": 50.6,
    "mean_saturation": 0.2547,
    "hue_spread_deg": 39.7,
    "resultant_R": 0.7862,
    "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": "hidream-o1-dev__scene_the_fold__F__s1105.jpg",
   "id": "inland-the-fold-the-failing-dyke-f-bare",
   "archive_id": "hidream-o1-dev__scene_the_fold__F__s1105",
   "cell_label": "",
   "at": "2026-08-23T16:47: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": "inland-the-fold-the-failing-dyke-f-bare"
  },
  {
   "subject": "AVATAR \u00b7 the newcomer (axis roll A)",
   "row": "",
   "column": "A shipped",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. close-up head-and-shoulders portrait of a wary newcomer to the cove, oilskin collar turned up against the fog, curious eyes. appearance: young, black hair, stocky, empty-handed",
   "prompt_source": "art.avatar_seed verbatim + one FROZEN roll of the authored art.avatar_axes (option 0 of each axis), so the avatar row is as fixed as every other. Composed as the avatar/pet door (ArtService.java:2315) \u2192 assembleArtPrompt(style, frame, appearance, \u201cappearance\u201d). 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/avatar-the-newcomer-axis-roll-a-a-shipped.webp",
   "tile": "img/avatar-the-newcomer-axis-roll-a-a-shipped.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": 1205,
   "render_seconds": 2.48,
   "colour": {
    "mean_hue_deg": 22.0,
    "mean_saturation": 0.3183,
    "hue_spread_deg": 54.4,
    "resultant_R": 0.6369,
    "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": "hidream-o1-dev__avatar_a__A__s1205.jpg",
   "id": "avatar-the-newcomer-axis-roll-a-a-shipped",
   "archive_id": "hidream-o1-dev__avatar_a__A__s1205",
   "cell_label": "",
   "at": "2026-08-23T11:18:13+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": "avatar-the-newcomer-axis-roll-a-a-shipped"
  },
  {
   "subject": "AVATAR \u00b7 the newcomer (axis roll A)",
   "row": "",
   "column": "B no-amber",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. close-up head-and-shoulders portrait of a wary newcomer to the cove, oilskin collar turned up against the fog, curious eyes. appearance: young, black hair, stocky, empty-handed",
   "prompt_source": "art.avatar_seed verbatim + one FROZEN roll of the authored art.avatar_axes (option 0 of each axis), so the avatar row is as fixed as every other. Composed as the avatar/pet door (ArtService.java:2315) \u2192 assembleArtPrompt(style, frame, appearance, \u201cappearance\u201d). 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/avatar-the-newcomer-axis-roll-a-b-no-amber.webp",
   "tile": "img/avatar-the-newcomer-axis-roll-a-b-no-amber.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": 1205,
   "render_seconds": 2.47,
   "colour": {
    "mean_hue_deg": 29.3,
    "mean_saturation": 0.1909,
    "hue_spread_deg": 91.8,
    "resultant_R": 0.2769,
    "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": "hidream-o1-dev__avatar_a__B__s1205.jpg",
   "id": "avatar-the-newcomer-axis-roll-a-b-no-amber",
   "archive_id": "hidream-o1-dev__avatar_a__B__s1205",
   "cell_label": "",
   "at": "2026-08-23T16:47: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": "avatar-the-newcomer-axis-roll-a-b-no-amber"
  },
  {
   "subject": "AVATAR \u00b7 the newcomer (axis roll A)",
   "row": "",
   "column": "C medium-only",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. close-up head-and-shoulders portrait of a wary newcomer to the cove, oilskin collar turned up against the fog, curious eyes. appearance: young, black hair, stocky, empty-handed",
   "prompt_source": "art.avatar_seed verbatim + one FROZEN roll of the authored art.avatar_axes (option 0 of each axis), so the avatar row is as fixed as every other. Composed as the avatar/pet door (ArtService.java:2315) \u2192 assembleArtPrompt(style, frame, appearance, \u201cappearance\u201d). 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/avatar-the-newcomer-axis-roll-a-c-medium-only.webp",
   "tile": "img/avatar-the-newcomer-axis-roll-a-c-medium-only.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": 1205,
   "render_seconds": 2.46,
   "colour": {
    "mean_hue_deg": 17.1,
    "mean_saturation": 0.2003,
    "hue_spread_deg": 62.5,
    "resultant_R": 0.5517,
    "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": "hidream-o1-dev__avatar_a__C__s1205.jpg",
   "id": "avatar-the-newcomer-axis-roll-a-c-medium-only",
   "archive_id": "hidream-o1-dev__avatar_a__C__s1205",
   "cell_label": "",
   "at": "2026-08-23T16:48: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": "avatar-the-newcomer-axis-roll-a-c-medium-only"
  },
  {
   "subject": "AVATAR \u00b7 the newcomer (axis roll A)",
   "row": "",
   "column": "D full-range",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. close-up head-and-shoulders portrait of a wary newcomer to the cove, oilskin collar turned up against the fog, curious eyes. appearance: young, black hair, stocky, empty-handed",
   "prompt_source": "art.avatar_seed verbatim + one FROZEN roll of the authored art.avatar_axes (option 0 of each axis), so the avatar row is as fixed as every other. Composed as the avatar/pet door (ArtService.java:2315) \u2192 assembleArtPrompt(style, frame, appearance, \u201cappearance\u201d). 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/avatar-the-newcomer-axis-roll-a-d-full-range.webp",
   "tile": "img/avatar-the-newcomer-axis-roll-a-d-full-range.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": 1205,
   "render_seconds": 2.46,
   "colour": {
    "mean_hue_deg": 30.6,
    "mean_saturation": 0.1628,
    "hue_spread_deg": 100.9,
    "resultant_R": 0.212,
    "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": "hidream-o1-dev__avatar_a__D__s1205.jpg",
   "id": "avatar-the-newcomer-axis-roll-a-d-full-range",
   "archive_id": "hidream-o1-dev__avatar_a__D__s1205",
   "cell_label": "",
   "at": "2026-08-23T16:48:08+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": "avatar-the-newcomer-axis-roll-a-d-full-range"
  },
  {
   "subject": "AVATAR \u00b7 the newcomer (axis roll A)",
   "row": "",
   "column": "E storybook-clear",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. close-up head-and-shoulders portrait of a wary newcomer to the cove, oilskin collar turned up against the fog, curious eyes. appearance: young, black hair, stocky, empty-handed",
   "prompt_source": "art.avatar_seed verbatim + one FROZEN roll of the authored art.avatar_axes (option 0 of each axis), so the avatar row is as fixed as every other. Composed as the avatar/pet door (ArtService.java:2315) \u2192 assembleArtPrompt(style, frame, appearance, \u201cappearance\u201d). 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/avatar-the-newcomer-axis-roll-a-e-storybook-clear.webp",
   "tile": "img/avatar-the-newcomer-axis-roll-a-e-storybook-clear.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": 1205,
   "render_seconds": 2.46,
   "colour": {
    "mean_hue_deg": 29.7,
    "mean_saturation": 0.1801,
    "hue_spread_deg": 72.2,
    "resultant_R": 0.4517,
    "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": "hidream-o1-dev__avatar_a__E__s1205.jpg",
   "id": "avatar-the-newcomer-axis-roll-a-e-storybook-clear",
   "archive_id": "hidream-o1-dev__avatar_a__E__s1205",
   "cell_label": "",
   "at": "2026-08-23T16:48:16+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": "avatar-the-newcomer-axis-roll-a-e-storybook-clear"
  },
  {
   "subject": "AVATAR \u00b7 the newcomer (axis roll A)",
   "row": "",
   "column": "F bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, unsigned, no text, no letters, no signature, no watermark. close-up head-and-shoulders portrait of a wary newcomer to the cove, oilskin collar turned up against the fog, curious eyes. appearance: young, black hair, stocky, empty-handed",
   "prompt_source": "art.avatar_seed verbatim + one FROZEN roll of the authored art.avatar_axes (option 0 of each axis), so the avatar row is as fixed as every other. Composed as the avatar/pet door (ArtService.java:2315) \u2192 assembleArtPrompt(style, frame, appearance, \u201cappearance\u201d). 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/avatar-the-newcomer-axis-roll-a-f-bare.webp",
   "tile": "img/avatar-the-newcomer-axis-roll-a-f-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": 1205,
   "render_seconds": 2.47,
   "colour": {
    "mean_hue_deg": 33.1,
    "mean_saturation": 0.196,
    "hue_spread_deg": 100.8,
    "resultant_R": 0.213,
    "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": "hidream-o1-dev__avatar_a__F__s1205.jpg",
   "id": "avatar-the-newcomer-axis-roll-a-f-bare",
   "archive_id": "hidream-o1-dev__avatar_a__F__s1205",
   "cell_label": "",
   "at": "2026-08-23T16:48:24+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": "avatar-the-newcomer-axis-roll-a-f-bare"
  },
  {
   "subject": "INTERIOR \u00b7 The Breakwater Lamp-Room",
   "row": "",
   "column": "A shipped",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, an intimate interior view, unsigned, no text, no letters, no signature, no watermark. LOCATION VIGNETTE: inside a squat stone lamp-room by day, the great wick trimmed square and dark behind its glass, salt-scrubbed panes full of grey sea-light, thousands of faint tally marks scratched into the sill. lamp-amber and close shadow, the grain of old wood, one window's grey",
   "prompt_source": "interior \u201cThe Breakwater Lamp-Room\u201d art.prompt_seed, verbatim. An interior is INSIDE wherever its region stands, so it takes art.place_style[interior], never the region's terrain (ArtService.java:2110-2121 and the comment there). Composed as attachLocationArt \u2192 assembleArtPrompt(location_style, art_prompt_seed=absent, subject, \u201cLOCATION VIGNETTE\u201d, place_style[interior]). 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_regions-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/interior-the-breakwater-lamp-room-a-shipped.webp",
   "tile": "img/interior-the-breakwater-lamp-room-a-shipped.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": 1107,
   "render_seconds": 2.53,
   "colour": {
    "mean_hue_deg": 21.5,
    "mean_saturation": 0.3371,
    "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": "hidream-o1-dev__interior_the_breakwater_lamp_room__A__s1107.jpg",
   "id": "interior-the-breakwater-lamp-room-a-shipped",
   "archive_id": "hidream-o1-dev__interior_the_breakwater_lamp_room__A__s1107",
   "cell_label": "",
   "at": "2026-08-23T11:23:13+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": "interior-the-breakwater-lamp-room-a-shipped"
  },
  {
   "subject": "INTERIOR \u00b7 The Breakwater Lamp-Room",
   "row": "",
   "column": "B no-amber",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, an intimate interior view, unsigned, no text, no letters, no signature, no watermark. LOCATION VIGNETTE: inside a squat stone lamp-room by day, the great wick trimmed square and dark behind its glass, salt-scrubbed panes full of grey sea-light, thousands of faint tally marks scratched into the sill. lamp-amber and close shadow, the grain of old wood, one window's grey",
   "prompt_source": "interior \u201cThe Breakwater Lamp-Room\u201d art.prompt_seed, verbatim. An interior is INSIDE wherever its region stands, so it takes art.place_style[interior], never the region's terrain (ArtService.java:2110-2121 and the comment there). Composed as attachLocationArt \u2192 assembleArtPrompt(location_style, art_prompt_seed=absent, subject, \u201cLOCATION VIGNETTE\u201d, place_style[interior]). 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_regions-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/interior-the-breakwater-lamp-room-b-no-amber.webp",
   "tile": "img/interior-the-breakwater-lamp-room-b-no-amber.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": 1107,
   "render_seconds": 2.46,
   "colour": {
    "mean_hue_deg": 18.9,
    "mean_saturation": 0.2504,
    "hue_spread_deg": 19.7,
    "resultant_R": 0.9426,
    "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": "hidream-o1-dev__interior_the_breakwater_lamp_room__B__s1107.jpg",
   "id": "interior-the-breakwater-lamp-room-b-no-amber",
   "archive_id": "hidream-o1-dev__interior_the_breakwater_lamp_room__B__s1107",
   "cell_label": "",
   "at": "2026-08-23T16:48:32+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": "interior-the-breakwater-lamp-room-b-no-amber"
  },
  {
   "subject": "INTERIOR \u00b7 The Breakwater Lamp-Room",
   "row": "",
   "column": "C medium-only",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, an intimate interior view, unsigned, no text, no letters, no signature, no watermark. LOCATION VIGNETTE: inside a squat stone lamp-room by day, the great wick trimmed square and dark behind its glass, salt-scrubbed panes full of grey sea-light, thousands of faint tally marks scratched into the sill. lamp-amber and close shadow, the grain of old wood, one window's grey",
   "prompt_source": "interior \u201cThe Breakwater Lamp-Room\u201d art.prompt_seed, verbatim. An interior is INSIDE wherever its region stands, so it takes art.place_style[interior], never the region's terrain (ArtService.java:2110-2121 and the comment there). Composed as attachLocationArt \u2192 assembleArtPrompt(location_style, art_prompt_seed=absent, subject, \u201cLOCATION VIGNETTE\u201d, place_style[interior]). 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_regions-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/interior-the-breakwater-lamp-room-c-medium-only.webp",
   "tile": "img/interior-the-breakwater-lamp-room-c-medium-only.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": 1107,
   "render_seconds": 2.46,
   "colour": {
    "mean_hue_deg": 21.9,
    "mean_saturation": 0.2502,
    "hue_spread_deg": 16.9,
    "resultant_R": 0.9573,
    "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": "hidream-o1-dev__interior_the_breakwater_lamp_room__C__s1107.jpg",
   "id": "interior-the-breakwater-lamp-room-c-medium-only",
   "archive_id": "hidream-o1-dev__interior_the_breakwater_lamp_room__C__s1107",
   "cell_label": "",
   "at": "2026-08-23T16:48: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": "interior-the-breakwater-lamp-room-c-medium-only"
  },
  {
   "subject": "INTERIOR \u00b7 The Breakwater Lamp-Room",
   "row": "",
   "column": "D full-range",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, an intimate interior view, unsigned, no text, no letters, no signature, no watermark. LOCATION VIGNETTE: inside a squat stone lamp-room by day, the great wick trimmed square and dark behind its glass, salt-scrubbed panes full of grey sea-light, thousands of faint tally marks scratched into the sill. lamp-amber and close shadow, the grain of old wood, one window's grey",
   "prompt_source": "interior \u201cThe Breakwater Lamp-Room\u201d art.prompt_seed, verbatim. An interior is INSIDE wherever its region stands, so it takes art.place_style[interior], never the region's terrain (ArtService.java:2110-2121 and the comment there). Composed as attachLocationArt \u2192 assembleArtPrompt(location_style, art_prompt_seed=absent, subject, \u201cLOCATION VIGNETTE\u201d, place_style[interior]). 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_regions-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/interior-the-breakwater-lamp-room-d-full-range.webp",
   "tile": "img/interior-the-breakwater-lamp-room-d-full-range.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": 1107,
   "render_seconds": 2.45,
   "colour": {
    "mean_hue_deg": 19.8,
    "mean_saturation": 0.1742,
    "hue_spread_deg": 25.8,
    "resultant_R": 0.9036,
    "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": "hidream-o1-dev__interior_the_breakwater_lamp_room__D__s1107.jpg",
   "id": "interior-the-breakwater-lamp-room-d-full-range",
   "archive_id": "hidream-o1-dev__interior_the_breakwater_lamp_room__D__s1107",
   "cell_label": "",
   "at": "2026-08-23T16:48:47+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": "interior-the-breakwater-lamp-room-d-full-range"
  },
  {
   "subject": "INTERIOR \u00b7 The Breakwater Lamp-Room",
   "row": "",
   "column": "E storybook-clear",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, an intimate interior view, unsigned, no text, no letters, no signature, no watermark. LOCATION VIGNETTE: inside a squat stone lamp-room by day, the great wick trimmed square and dark behind its glass, salt-scrubbed panes full of grey sea-light, thousands of faint tally marks scratched into the sill. lamp-amber and close shadow, the grain of old wood, one window's grey",
   "prompt_source": "interior \u201cThe Breakwater Lamp-Room\u201d art.prompt_seed, verbatim. An interior is INSIDE wherever its region stands, so it takes art.place_style[interior], never the region's terrain (ArtService.java:2110-2121 and the comment there). Composed as attachLocationArt \u2192 assembleArtPrompt(location_style, art_prompt_seed=absent, subject, \u201cLOCATION VIGNETTE\u201d, place_style[interior]). 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_regions-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/interior-the-breakwater-lamp-room-e-storybook-clear.webp",
   "tile": "img/interior-the-breakwater-lamp-room-e-storybook-clear.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": 1107,
   "render_seconds": 2.46,
   "colour": {
    "mean_hue_deg": 22.3,
    "mean_saturation": 0.2193,
    "hue_spread_deg": 14.3,
    "resultant_R": 0.9693,
    "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": "hidream-o1-dev__interior_the_breakwater_lamp_room__E__s1107.jpg",
   "id": "interior-the-breakwater-lamp-room-e-storybook-clear",
   "archive_id": "hidream-o1-dev__interior_the_breakwater_lamp_room__E__s1107",
   "cell_label": "",
   "at": "2026-08-23T16:48:55+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": "interior-the-breakwater-lamp-room-e-storybook-clear"
  },
  {
   "subject": "INTERIOR \u00b7 The Breakwater Lamp-Room",
   "row": "",
   "column": "F bare",
   "prompt": "painted storybook realism, soft brushwork, warm amber glow, gentle folk-tale wistfulness, an intimate interior view, unsigned, no text, no letters, no signature, no watermark. LOCATION VIGNETTE: inside a squat stone lamp-room by day, the great wick trimmed square and dark behind its glass, salt-scrubbed panes full of grey sea-light, thousands of faint tally marks scratched into the sill. lamp-amber and close shadow, the grain of old wood, one window's grey",
   "prompt_source": "interior \u201cThe Breakwater Lamp-Room\u201d art.prompt_seed, verbatim. An interior is INSIDE wherever its region stands, so it takes art.place_style[interior], never the region's terrain (ArtService.java:2110-2121 and the comment there). Composed as attachLocationArt \u2192 assembleArtPrompt(location_style, art_prompt_seed=absent, subject, \u201cLOCATION VIGNETTE\u201d, place_style[interior]). 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_regions-768 shows, copied here with its own row (same model, prompt, size, seed and steps).",
   "image": "img/full/interior-the-breakwater-lamp-room-f-bare.webp",
   "tile": "img/interior-the-breakwater-lamp-room-f-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": 1107,
   "render_seconds": 2.46,
   "colour": {
    "mean_hue_deg": 23.5,
    "mean_saturation": 0.3432,
    "hue_spread_deg": 22.6,
    "resultant_R": 0.925,
    "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": "hidream-o1-dev__interior_the_breakwater_lamp_room__F__s1107.jpg",
   "id": "interior-the-breakwater-lamp-room-f-bare",
   "archive_id": "hidream-o1-dev__interior_the_breakwater_lamp_room__F__s1107",
   "cell_label": "",
   "at": "2026-08-23T16:49:03+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": "interior-the-breakwater-lamp-room-f-bare"
  }
 ]
}
