{
  "code": "S105",
  "name": "Photo deck",
  "shape": "photo-deck",
  "family": "Evidence and pictures",
  "fits": "A central portrait image with two stepped, smaller pictures on each side; user selection cycles through the finite collection.",
  "use_when": "People, objects or artwork should be explored one at a time while the neighbouring choices remain visible. Fan option starts as a compact pile.",
  "slots": [
    {
      "name": "pictures",
      "holds": "cleared images with meaningful alt text and verified captions",
      "budget": "5 items"
    },
    {
      "name": "headline",
      "holds": "one verified collection description",
      "budget": "under 14 words"
    }
  ],
  "columns": 1,
  "density": "standard",
  "surface": "paper",
  "works_on": [
    "page",
    "deck"
  ],
  "library": "useLayouts",
  "dir": "S105-photo-deck",
  "semantic": {
    "audience_question": "Which five images belong to this finite collection?",
    "intent": "Explore each captioned image without losing the collection’s reading order.",
    "reasoning_relation": "finite image collection and selection",
    "message_pattern": "[Collection] contains [items], with [context or captions where needed].",
    "required_content": [
      "Five cleared images with identifying captions; each belongs to the same declared collection."
    ],
    "narrative_positions": [
      "evidence",
      "reference"
    ],
    "requires_before": [
      "Introduce the collection and whether its order matters."
    ],
    "enables_after": [
      "Explain one selected view or synthesise the collection."
    ],
    "slot_roles": {
      "pictures": "Five cleared images with identifying captions; each belongs to the same declared collection."
    },
    "avoid_when": [
      "A comparison requiring every image visible simultaneously.",
      "A chronological argument hidden behind unlabelled image selection."
    ],
    "layout_specific_contract": "A central portrait image with two stepped, smaller pictures on each side; user selection cycles through the finite collection.",
    "provenance": {
      "basis": "interpretation of the existing layout and slot contracts",
      "review": "Tessel model-authored guidance; implementation approved by Nic, 2026-10-10",
      "corpus_evidence_status": "not yet established",
      "guide": "../SEMANTICS.md"
    },
    "variation_rule": "Read the selected option’s actual markup, slot count and source record. Preserve this reasoning relationship only if the option still expresses it; flag a mismatch before adapting.",
    "reader_outcome": "Explore each captioned image without losing the collection’s reading order.",
    "matching": {
      "audience_question": "Which five images belong to this finite collection?",
      "reader_outcome": "Explore each captioned image without losing the collection’s reading order.",
      "reasoning_relation": "finite image collection and selection",
      "content_shape": {
        "composition": "A central portrait image with two stepped, smaller pictures on each side; user selection cycles through the finite collection.",
        "selected_state": "A central portrait image with two stepped, smaller pictures on each side; user selection cycles through the finite collection.",
        "density": "standard",
        "columns": 1,
        "column_note": "Base metadata only; selected option can replace the base geometry."
      },
      "required_slots": [
        {
          "name": "pictures",
          "reader_question": "What subject, example or view must I inspect, and is it evidence or illustration?",
          "semantic_role": "Five cleared images with identifying captions; each belongs to the same declared collection.",
          "content_unit_count": {
            "min": 5,
            "max": 5,
            "basis": "authored composition members where a repeated group is specified; otherwise one named slot; not a required amount of evidence"
          },
          "placeholder": "[CLEARED IMAGE OR LABELLED ILLUSTRATION · pictures · cleared images with meaningful alt text and verified captions]",
          "layout_budget": {
            "authored": "5 items",
            "policy": "Working composition guidance: preserve scope and qualification; change layout rather than truncate the argument."
          },
          "markup": {
            "slot": "pictures",
            "occurrences": 5,
            "annotation_status": "present",
            "visibility_status": "not asserted from static parsing",
            "sample_word_counts": [
              3,
              3,
              3,
              3,
              3
            ]
          },
          "integrity": "Clear rights and provenance, retain meaningful alt text; generated scenes illustrate and cannot prove a historical event."
        }
      ],
      "rejection_constraints": [
        "A looping selection implying an unlimited feed or captions that disappear in the static view.",
        "Motion implying hierarchy or completeness that the collection does not support."
      ],
      "option_guidance": {
        "option": "default",
        "composition_delta": "A central portrait image with two stepped, smaller pictures on each side; user selection cycles through the finite collection.",
        "semantic_change": "retains base content relationship; changes presentation or disclosure",
        "matching_instruction": "Select S105 default when the supplied material answers “Which five images belong to this finite collection?” through finite image collection and selection. Respect this state: A central portrait image with two stepped, smaller pictures on each side; user selection cycles through the finite collection."
      },
      "provenance": {
        "status": "inferred composition evidence",
        "author_intent": "not independently confirmed",
        "basis": [
          "retained source composition where available",
          "authored layout and slot contracts",
          "static implementation inspection"
        ],
        "source_visual_count": 2,
        "source_visual_sha256": [
          "4a04332ba7723769f10fb9b405102d7d4662b96a3d845c151f4155d7d0b29afa",
          "890914ec7315304871588d88e67d7082f9f48c565d8ad104412a51cdb60daf9e"
        ],
        "source_export": "private source images remain outside this draft site",
        "markup_sha256": "8ffe9c95358256c2aedde3182d9fe6f20f0e8fc3fa4e70fab1bb31acd58e9abb",
        "limits": [
          "Static parsing inventories authored nodes; it does not certify rendered visibility, responsive fit or interactive state.",
          "Budgets are authored layout guidance, not a content-writing limit or proof of fit.",
          "Matching guidance is a draft inference; it does not establish facts, endorsement, causation or source author intent."
        ]
      },
      "adaptation_rules": [
        "Choose by audience question, reasoning relation and required content before aesthetic preference.",
        "Supply every required semantic role; retain visible unknowns as labelled real-content placeholders.",
        "A number needs source, scope and units; a quotation needs faithful wording and attribution.",
        "Do not infer importance from area, colour, depth or movement unless the content explicitly defines that encoding.",
        "Keep colour token roles, structural objects, licences and source records; changing content does not authorize changing them."
      ],
      "previous_required_slots": [
        {
          "name": "pictures",
          "reader_question": "What subject, example or view must I inspect, and is it evidence or illustration?",
          "semantic_role": "cleared images with meaningful alt text and verified captions",
          "content_unit_count": {
            "min": 5,
            "max": 5,
            "basis": "authored composition members where a repeated group is specified; otherwise one named slot; not a required amount of evidence"
          },
          "placeholder": "[CLEARED IMAGE OR LABELLED ILLUSTRATION · pictures · cleared images with meaningful alt text and verified captions]",
          "layout_budget": {
            "authored": "5 items",
            "policy": "Working composition guidance: preserve scope and qualification; change layout rather than truncate the argument."
          },
          "markup": {
            "slot": "pictures",
            "occurrences": 5,
            "annotation_status": "present",
            "visibility_status": "not asserted from static parsing",
            "sample_word_counts": [
              3,
              3,
              3,
              3,
              3
            ]
          },
          "integrity": "Clear rights and provenance, retain meaningful alt text; generated scenes illustrate and cannot prove a historical event."
        },
        {
          "name": "headline",
          "reader_question": "Which five images belong to this finite collection?",
          "semantic_role": "one verified collection description",
          "content_unit_count": {
            "min": 1,
            "max": 1,
            "basis": "authored composition members where a repeated group is specified; otherwise one named slot; not a required amount of evidence"
          },
          "placeholder": "[REAL CONTENT · headline · one verified collection description]",
          "layout_budget": {
            "authored": "under 14 words",
            "policy": "Working composition guidance: preserve scope and qualification; change layout rather than truncate the argument."
          },
          "markup": {
            "slot": "headline",
            "occurrences": 0,
            "annotation_status": "unannotated semantic unit; locate in authored structure",
            "visibility_status": "not asserted from static parsing"
          }
        }
      ],
      "contract_correction": {
        "date": "2026-10-13",
        "basis": "Actual selected HTML/CSS inspection; previous required slots retained for review.",
        "records": [
          {
            "code": "S105",
            "option": "default",
            "slots": [
              "pictures"
            ]
          }
        ]
      }
    },
    "rejection_constraints": [
      "A looping selection implying an unlimited feed or captions that disappear in the static view.",
      "Motion implying hierarchy or completeness that the collection does not support."
    ],
    "markup_inventory": {
      "file": "spread.html",
      "sha256": "8ffe9c95358256c2aedde3182d9fe6f20f0e8fc3fa4e70fab1bb31acd58e9abb",
      "method": "static lxml markup plus authored option description; no rendered-visibility claim",
      "all_markup_slot_counts": {
        "pictures": 5
      },
      "slot_evidence": {
        "pictures": [
          {
            "tag": "figure",
            "classes": "cat-photo",
            "sample_word_count": 3,
            "repeated_children": 2
          },
          {
            "tag": "figure",
            "classes": "cat-photo",
            "sample_word_count": 3,
            "repeated_children": 2
          },
          {
            "tag": "figure",
            "classes": "cat-photo",
            "sample_word_count": 3,
            "repeated_children": 2
          },
          {
            "tag": "figure",
            "classes": "cat-photo",
            "sample_word_count": 3,
            "repeated_children": 2
          },
          {
            "tag": "figure",
            "classes": "cat-photo",
            "sample_word_count": 3,
            "repeated_children": 2
          }
        ]
      },
      "option_selectors": [],
      "linked_implementation": [
        {
          "file": "../spreads.css",
          "sha256": "32da94472b0c9131e4d5dae7d5bf0498b09202a9e66294b4e4f23e6ddfbf37ba"
        },
        {
          "file": "../catalogue-options.css",
          "sha256": "d4ac2c72a1ba61f50fc52dbacff24130de014f42f1dc2df5fd841bea7a34e2db"
        },
        {
          "file": "../spread.js",
          "sha256": "3d99948b83f750bd4ae95dac08e3e50a395de7c149c90a6f1a1c0ea36a2634a4"
        },
        {
          "file": "../catalogue-options.js",
          "sha256": "ca693515383ba7cdf6d9937beada03614150786a4ca850ca800282ed4732d991"
        }
      ]
    },
    "variations": {
      "fan": {
        "audience_question": "Which captioned images are in this compact pile?",
        "intent": "Inspect every image while retaining the complete static order.",
        "reader_outcome": "Inspect every image while retaining the complete static order.",
        "reasoning_relation": "finite image pile and disclosure",
        "slot_roles": {
          "pictures": "Five cleared images with identifying captions; each belongs to the same declared collection."
        },
        "matching": {
          "audience_question": "Which captioned images are in this compact pile?",
          "reader_outcome": "Inspect every image while retaining the complete static order.",
          "reasoning_relation": "finite image pile and disclosure",
          "content_shape": {
            "composition": "A central portrait image with two stepped, smaller pictures on each side; user selection cycles through the finite collection.",
            "selected_state": "A compact photo pile fans open on hover, focus or button; static views show every caption.",
            "density": "standard",
            "columns": 1,
            "column_note": "Base metadata only; selected option can replace the base geometry."
          },
          "required_slots": [
            {
              "name": "pictures",
              "reader_question": "What subject, example or view must I inspect, and is it evidence or illustration?",
              "semantic_role": "Five cleared images with identifying captions; each belongs to the same declared collection.",
              "content_unit_count": {
                "min": 5,
                "max": 5,
                "basis": "authored composition members where a repeated group is specified; otherwise one named slot; not a required amount of evidence"
              },
              "placeholder": "[CLEARED IMAGE OR LABELLED ILLUSTRATION · pictures · cleared images with meaningful alt text and verified captions]",
              "layout_budget": {
                "authored": "5 items",
                "policy": "Working composition guidance: preserve scope and qualification; change layout rather than truncate the argument."
              },
              "markup": {
                "slot": "pictures",
                "occurrences": 5,
                "annotation_status": "present",
                "visibility_status": "not asserted from static parsing",
                "sample_word_counts": [
                  3,
                  3,
                  3,
                  3,
                  3
                ]
              },
              "integrity": "Clear rights and provenance, retain meaningful alt text; generated scenes illustrate and cannot prove a historical event."
            }
          ],
          "rejection_constraints": [
            "Hover as the only way to read captions or pile position implying ranking.",
            "Motion implying hierarchy or completeness that the collection does not support."
          ],
          "option_guidance": {
            "option": "fan",
            "composition_delta": "A compact photo pile fans open on hover, focus or button; static views show every caption.",
            "semantic_change": "changes content relationship",
            "matching_instruction": "Select S105 fan when the supplied material answers “Which captioned images are in this compact pile?” through finite image pile and disclosure. Respect this state: A compact photo pile fans open on hover, focus or button; static views show every caption."
          },
          "provenance": {
            "status": "inferred composition evidence",
            "author_intent": "not independently confirmed",
            "basis": [
              "retained source composition where available",
              "authored layout and slot contracts",
              "static implementation inspection"
            ],
            "source_visual_count": 2,
            "source_visual_sha256": [
              "4a04332ba7723769f10fb9b405102d7d4662b96a3d845c151f4155d7d0b29afa",
              "890914ec7315304871588d88e67d7082f9f48c565d8ad104412a51cdb60daf9e"
            ],
            "source_export": "private source images remain outside this draft site",
            "markup_sha256": "8ffe9c95358256c2aedde3182d9fe6f20f0e8fc3fa4e70fab1bb31acd58e9abb",
            "limits": [
              "Static parsing inventories authored nodes; it does not certify rendered visibility, responsive fit or interactive state.",
              "Budgets are authored layout guidance, not a content-writing limit or proof of fit.",
              "Matching guidance is a draft inference; it does not establish facts, endorsement, causation or source author intent."
            ]
          },
          "adaptation_rules": [
            "Choose by audience question, reasoning relation and required content before aesthetic preference.",
            "Supply every required semantic role; retain visible unknowns as labelled real-content placeholders.",
            "A number needs source, scope and units; a quotation needs faithful wording and attribution.",
            "Do not infer importance from area, colour, depth or movement unless the content explicitly defines that encoding.",
            "Keep colour token roles, structural objects, licences and source records; changing content does not authorize changing them."
          ],
          "previous_required_slots": [
            {
              "name": "pictures",
              "reader_question": "What subject, example or view must I inspect, and is it evidence or illustration?",
              "semantic_role": "cleared images with meaningful alt text and verified captions",
              "content_unit_count": {
                "min": 5,
                "max": 5,
                "basis": "authored composition members where a repeated group is specified; otherwise one named slot; not a required amount of evidence"
              },
              "placeholder": "[CLEARED IMAGE OR LABELLED ILLUSTRATION · pictures · cleared images with meaningful alt text and verified captions]",
              "layout_budget": {
                "authored": "5 items",
                "policy": "Working composition guidance: preserve scope and qualification; change layout rather than truncate the argument."
              },
              "markup": {
                "slot": "pictures",
                "occurrences": 5,
                "annotation_status": "present",
                "visibility_status": "not asserted from static parsing",
                "sample_word_counts": [
                  3,
                  3,
                  3,
                  3,
                  3
                ]
              },
              "integrity": "Clear rights and provenance, retain meaningful alt text; generated scenes illustrate and cannot prove a historical event."
            },
            {
              "name": "headline",
              "reader_question": "Which captioned images are in this compact pile?",
              "semantic_role": "one verified collection description",
              "content_unit_count": {
                "min": 1,
                "max": 1,
                "basis": "authored composition members where a repeated group is specified; otherwise one named slot; not a required amount of evidence"
              },
              "placeholder": "[REAL CONTENT · headline · one verified collection description]",
              "layout_budget": {
                "authored": "under 14 words",
                "policy": "Working composition guidance: preserve scope and qualification; change layout rather than truncate the argument."
              },
              "markup": {
                "slot": "headline",
                "occurrences": 0,
                "annotation_status": "unannotated semantic unit; locate in authored structure",
                "visibility_status": "not asserted from static parsing"
              }
            }
          ],
          "contract_correction": {
            "date": "2026-10-13",
            "basis": "Actual selected HTML/CSS inspection; previous required slots retained for review.",
            "records": [
              {
                "code": "S105",
                "option": "fan",
                "slots": [
                  "pictures"
                ]
              }
            ]
          }
        },
        "narrative_profile": {
          "central_point": "A finite image collection can be explored one view at a time while preserving access to every member.",
          "communication_job": "Keep the same finite-image exploration job as a compact pile that fans open with hover, focus or a button.",
          "audience_value": "Offers visual exploration and context. It answers “What is in this collection?”; the current centre position is a selection state, not a ranking.",
          "reading_path": [
            "Read the collection context.",
            "Open the pile to inspect its five captioned members.",
            "Use the complete static presentation when hover is unavailable."
          ],
          "adaptation": {
            "required_inputs": [
              "Five cleared images with identifying captions; each belongs to the same declared collection."
            ],
            "slot_guidance": {
              "pictures": "Five cleared images with identifying captions; each belongs to the same declared collection."
            },
            "can_change": [
              "Replace the fictional subject and its supported content while retaining the roles and relationship described here."
            ],
            "must_survive": [
              "Keep all five captions and images accessible in complete static viewing.",
              "Selection prominence must not imply superiority.",
              "Do not describe the existing controls as an automatic playback engine."
            ]
          },
          "worked_example": {
            "fictional": true,
            "scenario": "Fictional Cedar shows five aspects of a workshop day.",
            "slot_fills": {
              "pictures": [
                "Fictional illustration: volunteer prepares tools — “Ready before opening”.",
                "Fictional illustration: visitor describes a fault — “Start with the history”.",
                "Fictional illustration: repairer checks the item — “Assess within limits”.",
                "Fictional illustration: volunteer records a referral — “Know when to stop”.",
                "Fictional illustration: team reviews notes — “Learn before repeating”."
              ]
            },
            "reasoning": "The collection covers preparation, intake, assessment, referral and review; captions preserve context when a single picture comes to the foreground.",
            "qualification": "Fictional teaching example. Replace invented details with authorised content and keep any source, scope, status or uncertainty that affects interpretation."
          },
          "narrative_fit": {
            "before": "Introduce the collection and whether its order matters.",
            "after": "Explain one selected view or synthesise the collection.",
            "good_uses": [
              "A small portfolio or visual field-note set."
            ],
            "poor_fits": [
              "A comparison requiring every image visible simultaneously.",
              "A chronological argument hidden behind unlabelled image selection."
            ]
          },
          "evidence": {
            "observations": [
              "Viewed base source: a large central portrait is flanked by two stepped images on each side.",
              "Current HTML has five captioned pictures and Previous/Next/Show all controls but no headline element; corrected matching now requires only the five pictures.",
              "Current option markup/CSS: Keep the same finite-image exploration job as a compact pile that fans open with hover, focus or a button.",
              "Viewed source-opt-fan.webp: a pile fans into several bordered photo cards."
            ],
            "interpretations": [
              "A finite image collection can be explored one view at a time while preserving access to every member. This is an interpretation of the inspected composition, not a verified claim of author intent."
            ],
            "not_verified": [
              "Original author intent, historical claims, persuasion and archive-wide frequency have not been independently verified."
            ],
            "references": [
              "02_product/spreads/S105-photo-deck/source.webp",
              "02_product/spreads-semantics-2026-10-13/dist/S105-photo-deck/spread.html",
              "02_product/spreads-semantics-2026-10-13/dist/S105-photo-deck/spread.json",
              "https://uselayouts.com/docs/components/coverflow-drag",
              "02_product/spreads/S105-photo-deck/source-opt-fan.webp"
            ]
          },
          "review": {
            "status": "reviewed",
            "basis": "Viewed the base source capture and inspected this option’s current markup, CSS and matching contract. No distinct option-source capture was reviewed unless explicitly stated in observations. Rechecked integrated matching on 2026-10-13: required roles, example fills and repeated-item counts agree. Previously provisional because matching required a nonexistent headline. The integrated contract now requires only five pictures; the adaptation still requires surrounding page context to establish their shared subject. Historical issue details remain in contract-issues-reading.json. This review does not establish original author intent or verify playback."
          },
          "variation_relationship": "same-job"
        },
        "required_content": [
          "Five cleared images with identifying captions; each belongs to the same declared collection."
        ],
        "requires_before": [
          "Introduce the collection and whether its order matters."
        ],
        "enables_after": [
          "Explain one selected view or synthesise the collection."
        ],
        "avoid_when": [
          "A comparison requiring every image visible simultaneously.",
          "A chronological argument hidden behind unlabelled image selection."
        ]
      }
    },
    "narrative_profile": {
      "central_point": "A finite image collection can be explored one view at a time while preserving access to every member.",
      "communication_job": "Let the reader inspect and select among five related, captioned images.",
      "audience_value": "Offers visual exploration and context. It answers “What is in this collection?”; the current centre position is a selection state, not a ranking.",
      "reading_path": [
        "Use surrounding prose or captions to identify the collection.",
        "Inspect the central image and caption.",
        "Move through the finite set or show all images to compare them."
      ],
      "adaptation": {
        "required_inputs": [
          "Five cleared images with identifying captions; each belongs to the same declared collection."
        ],
        "slot_guidance": {
          "pictures": "Five cleared images with identifying captions; each belongs to the same declared collection."
        },
        "can_change": [
          "Replace the fictional subject and its supported content while retaining the roles and relationship described here."
        ],
        "must_survive": [
          "Keep all five captions and images accessible in complete static viewing.",
          "Selection prominence must not imply superiority.",
          "Do not describe the existing controls as an automatic playback engine."
        ]
      },
      "worked_example": {
        "fictional": true,
        "scenario": "Fictional Cedar shows five aspects of a workshop day.",
        "slot_fills": {
          "pictures": [
            "Fictional illustration: volunteer prepares tools — “Ready before opening”.",
            "Fictional illustration: visitor describes a fault — “Start with the history”.",
            "Fictional illustration: repairer checks the item — “Assess within limits”.",
            "Fictional illustration: volunteer records a referral — “Know when to stop”.",
            "Fictional illustration: team reviews notes — “Learn before repeating”."
          ]
        },
        "reasoning": "The collection covers preparation, intake, assessment, referral and review; captions preserve context when a single picture comes to the foreground.",
        "qualification": "Fictional teaching example. Replace invented details with authorised content and keep any source, scope, status or uncertainty that affects interpretation."
      },
      "narrative_fit": {
        "before": "Introduce the collection and whether its order matters.",
        "after": "Explain one selected view or synthesise the collection.",
        "good_uses": [
          "A small portfolio or visual field-note set."
        ],
        "poor_fits": [
          "A comparison requiring every image visible simultaneously.",
          "A chronological argument hidden behind unlabelled image selection."
        ]
      },
      "evidence": {
        "observations": [
          "Viewed base source: a large central portrait is flanked by two stepped images on each side.",
          "Current HTML has five captioned pictures and Previous/Next/Show all controls but no headline element; corrected matching now requires only the five pictures."
        ],
        "interpretations": [
          "A finite image collection can be explored one view at a time while preserving access to every member. This is an interpretation of the inspected composition, not a verified claim of author intent."
        ],
        "not_verified": [
          "Original author intent, historical claims, persuasion and archive-wide frequency have not been independently verified."
        ],
        "references": [
          "02_product/spreads/S105-photo-deck/source.webp",
          "02_product/spreads-semantics-2026-10-13/dist/S105-photo-deck/spread.html",
          "02_product/spreads-semantics-2026-10-13/dist/S105-photo-deck/spread.json",
          "https://uselayouts.com/docs/components/coverflow-drag"
        ]
      },
      "review": {
        "status": "reviewed",
        "basis": "Viewed the retained base source capture and inspected current HTML and matching slots; reviewed the fictional adaptation at layout-contract level. Rechecked integrated matching on 2026-10-13: required roles, example fills and repeated-item counts agree. Previously provisional because matching required a nonexistent headline. The integrated contract now requires only five pictures; the adaptation still requires surrounding page context to establish their shared subject. Historical issue details remain in contract-issues-reading.json. This review does not establish original author intent or verify playback."
      },
      "variation_relationship": "base"
    }
  },
  "behaviour": {
    "script": "../catalogue-options.js",
    "record": "../catalogue-review.json",
    "reduced_motion": "Complete static collection",
    "no_script": "Complete static collection"
  },
  "options": [
    {
      "id": "fan",
      "what": "A compact photo pile fans open on hover, focus or button; static views show every caption.",
      "sources": [
        {
          "ref": "useLayouts Polaroid Stack",
          "url": "https://uselayouts.com/docs/components/polaroid-stack"
        }
      ]
    }
  ],
  "also_seen_in": [],
  "source": {
    "ref": "useLayouts Coverflow Drag",
    "url": "https://uselayouts.com/docs/components/coverflow-drag"
  }
}
