{
  "code": "S107",
  "name": "Halo dropzone",
  "shape": "file-intake",
  "family": "Inputs and interaction",
  "fits": "Centered title and instruction above a broad rounded file target with flowing lower-rim light, an active border trail and a queue below.",
  "use_when": "A file attachment or intake surface deserves a calm, tactile invitation. This preview selects files locally; a production uploader requires a separately specified backend.",
  "slots": [
    {
      "name": "title",
      "holds": "short action heading",
      "budget": "under 5 words"
    },
    {
      "name": "instruction",
      "holds": "what to select and where it goes",
      "budget": "under 25 words"
    },
    {
      "name": "files",
      "holds": "actual filenames, byte sizes and removal controls; read halo.js and motion-native.json; selection stays local until a separately specified uploader is connected",
      "budget": "one row per file"
    }
  ],
  "columns": 1,
  "density": "compact",
  "surface": "paper",
  "works_on": [
    "page",
    "deck"
  ],
  "library": "Cult UI",
  "dir": "S107-halo-dropzone",
  "semantic": {
    "audience_question": "What files can I select here, and where will they go?",
    "intent": "Understand allowed input and the actual local selection state.",
    "reasoning_relation": "file input and truthful local state",
    "message_pattern": "Select [supported files]. They will [actual local behaviour].",
    "required_content": [
      "Names the local file-selection task.",
      "States accepted material and the fact that selection stays local.",
      "Zero or more actual selected file rows, derived from selection; never fabricate upload progress or successful transfer."
    ],
    "narrative_positions": [
      "utility interaction"
    ],
    "requires_before": [
      "Explain the intended preparation task and supported file types."
    ],
    "enables_after": [
      "Connect a real upload destination only through a separately implemented workflow."
    ],
    "slot_roles": {
      "title": "Names the local file-selection task.",
      "instruction": "States accepted material and the fact that selection stays local.",
      "files": "Zero or more actual selected file rows, derived from selection; never fabricate upload progress or successful transfer."
    },
    "avoid_when": [
      "A working upload promise with no destination.",
      "Sensitive-data handling inferred from visual reassurance alone."
    ],
    "layout_specific_contract": "Centered title and instruction above a broad rounded file target with flowing lower-rim light, an active border trail and a queue below.",
    "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": "Understand allowed input and the actual local selection state.",
    "matching": {
      "audience_question": "What files can I select here, and where will they go?",
      "reader_outcome": "Understand allowed input and the actual local selection state.",
      "reasoning_relation": "file input and truthful local state",
      "content_shape": {
        "composition": "Centered title and instruction above a broad rounded file target with flowing lower-rim light, an active border trail and a queue below.",
        "selected_state": "Centered title and instruction above a broad rounded file target with flowing lower-rim light, an active border trail and a queue below.",
        "density": "compact",
        "columns": 1,
        "column_note": "Base metadata only; selected option can replace the base geometry."
      },
      "required_slots": [
        {
          "name": "title",
          "reader_question": "What files can I select here, and where will they go?",
          "semantic_role": "Names the local file-selection task.",
          "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 · title · short action heading]",
          "layout_budget": {
            "authored": "under 5 words",
            "policy": "Working composition guidance: preserve scope and qualification; change layout rather than truncate the argument."
          },
          "markup": {
            "slot": "title",
            "occurrences": 1,
            "annotation_status": "present",
            "visibility_status": "not asserted from static parsing",
            "sample_word_counts": [
              2
            ]
          }
        },
        {
          "name": "instruction",
          "reader_question": "What does the instruction contribute to this page’s reader outcome?",
          "semantic_role": "States accepted material and the fact that selection stays local.",
          "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 · instruction · what to select and where it goes]",
          "layout_budget": {
            "authored": "under 25 words",
            "policy": "Working composition guidance: preserve scope and qualification; change layout rather than truncate the argument."
          },
          "markup": {
            "slot": "instruction",
            "occurrences": 1,
            "annotation_status": "present",
            "visibility_status": "not asserted from static parsing",
            "sample_word_counts": [
              16
            ]
          }
        },
        {
          "name": "files",
          "reader_question": "What does the files contribute to this page’s reader outcome?",
          "semantic_role": "Zero or more actual selected file rows, derived from selection; never fabricate upload progress or successful transfer.",
          "content_unit_count": {
            "min": 0,
            "max": null,
            "basis": "authored composition members where a repeated group is specified; otherwise one named slot; not a required amount of evidence"
          },
          "placeholder": "[REAL CONTENT · files · actual filenames, byte sizes and removal controls; read halo.js and motion-native.json; selection stays local until a separately specified uploader is connected]",
          "layout_budget": {
            "authored": "one row per file",
            "policy": "Working composition guidance: preserve scope and qualification; change layout rather than truncate the argument."
          },
          "markup": {
            "slot": "files",
            "occurrences": 1,
            "annotation_status": "present",
            "visibility_status": "not asserted from static parsing",
            "sample_word_counts": [
              0
            ]
          }
        }
      ],
      "rejection_constraints": [
        "Selection presented as upload, invented progress or an undisclosed remote destination.",
        "Claiming upload, processing or success when the interface only selects files locally."
      ],
      "option_guidance": {
        "option": "default",
        "composition_delta": "Centered title and instruction above a broad rounded file target with flowing lower-rim light, an active border trail and a queue below.",
        "semantic_change": "retains base content relationship; changes presentation or disclosure",
        "matching_instruction": "Select S107 default when the supplied material answers “What files can I select here, and where will they go?” through file input and truthful local state. Respect this state: Centered title and instruction above a broad rounded file target with flowing lower-rim light, an active border trail and a queue below."
      },
      "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": [
          "adbe3d2be6dd332d348801f7c2100685ca93ea7f71ac43ac01c0a9b62f85501f",
          "cb2f41286d74ba9b9700c9e4e5e5146838e176026ee9cc726df5c369b1890783"
        ],
        "source_export": "private source images remain outside this draft site",
        "markup_sha256": "2fef15c3a352afc901108c69ba6cac0b8295629d082836c75567d266e4749d16",
        "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."
      ]
    },
    "rejection_constraints": [
      "Selection presented as upload, invented progress or an undisclosed remote destination.",
      "Claiming upload, processing or success when the interface only selects files locally."
    ],
    "markup_inventory": {
      "file": "spread.html",
      "sha256": "2fef15c3a352afc901108c69ba6cac0b8295629d082836c75567d266e4749d16",
      "method": "static lxml markup plus authored option description; no rendered-visibility claim",
      "all_markup_slot_counts": {
        "title": 1,
        "instruction": 1,
        "files": 1
      },
      "slot_evidence": {
        "title": [
          {
            "tag": "h2",
            "classes": "",
            "sample_word_count": 2,
            "repeated_children": 0
          }
        ],
        "instruction": [
          {
            "tag": "p",
            "classes": "",
            "sample_word_count": 16,
            "repeated_children": 0
          }
        ],
        "files": [
          {
            "tag": "ul",
            "classes": "halo-queue actual-queue",
            "sample_word_count": 0,
            "repeated_children": 0
          }
        ]
      },
      "option_selectors": [
        "queue",
        "thumbnails"
      ],
      "linked_implementation": [
        {
          "file": "../spreads.css",
          "sha256": "32da94472b0c9131e4d5dae7d5bf0498b09202a9e66294b4e4f23e6ddfbf37ba"
        },
        {
          "file": "../spread.js",
          "sha256": "3d99948b83f750bd4ae95dac08e3e50a395de7c149c90a6f1a1c0ea36a2634a4"
        },
        {
          "file": "halo.js",
          "sha256": "09a961869589b154612a12a59c357eaf4a7183127f2d6c86f6a4a6266c5dd8d5"
        }
      ]
    },
    "variations": {
      "queue": {
        "audience_question": "What does each sample selection row mean before real files are chosen?",
        "intent": "Distinguish illustrated queue layout from actual local selection.",
        "reader_outcome": "Distinguish illustrated queue layout from actual local selection.",
        "reasoning_relation": "sample input state and local selection",
        "slot_roles": {
          "title": "Names the local file-selection task.",
          "instruction": "States accepted material and the fact that selection stays local.",
          "files": "Zero or more actual selected file rows, derived from selection; never fabricate upload progress or successful transfer."
        },
        "matching": {
          "audience_question": "What does each sample selection row mean before real files are chosen?",
          "reader_outcome": "Distinguish illustrated queue layout from actual local selection.",
          "reasoning_relation": "sample input state and local selection",
          "content_shape": {
            "composition": "Centered title and instruction above a broad rounded file target with flowing lower-rim light, an active border trail and a queue below.",
            "selected_state": "Clearly labelled sample rows demonstrate selection layout; no fake upload progress.",
            "density": "compact",
            "columns": 1,
            "column_note": "Base metadata only; selected option can replace the base geometry."
          },
          "required_slots": [
            {
              "name": "title",
              "reader_question": "What does each sample selection row mean before real files are chosen?",
              "semantic_role": "Names the local file-selection task.",
              "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 · title · short action heading]",
              "layout_budget": {
                "authored": "under 5 words",
                "policy": "Working composition guidance: preserve scope and qualification; change layout rather than truncate the argument."
              },
              "markup": {
                "slot": "title",
                "occurrences": 1,
                "annotation_status": "present",
                "visibility_status": "not asserted from static parsing",
                "sample_word_counts": [
                  2
                ]
              }
            },
            {
              "name": "instruction",
              "reader_question": "What does the instruction contribute to this page’s reader outcome?",
              "semantic_role": "States accepted material and the fact that selection stays local.",
              "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 · instruction · what to select and where it goes]",
              "layout_budget": {
                "authored": "under 25 words",
                "policy": "Working composition guidance: preserve scope and qualification; change layout rather than truncate the argument."
              },
              "markup": {
                "slot": "instruction",
                "occurrences": 1,
                "annotation_status": "present",
                "visibility_status": "not asserted from static parsing",
                "sample_word_counts": [
                  16
                ]
              }
            },
            {
              "name": "files",
              "reader_question": "What does the files contribute to this page’s reader outcome?",
              "semantic_role": "Zero or more actual selected file rows, derived from selection; never fabricate upload progress or successful transfer.",
              "content_unit_count": {
                "min": 0,
                "max": null,
                "basis": "authored composition members where a repeated group is specified; otherwise one named slot; not a required amount of evidence"
              },
              "placeholder": "[REAL CONTENT · files · actual filenames, byte sizes and removal controls; read halo.js and motion-native.json; selection stays local until a separately specified uploader is connected]",
              "layout_budget": {
                "authored": "one row per file",
                "policy": "Working composition guidance: preserve scope and qualification; change layout rather than truncate the argument."
              },
              "markup": {
                "slot": "files",
                "occurrences": 1,
                "annotation_status": "present",
                "visibility_status": "not asserted from static parsing",
                "sample_word_counts": [
                  0
                ]
              }
            }
          ],
          "rejection_constraints": [
            "Fake upload progress or sample filenames presented as the user’s files.",
            "Claiming upload, processing or success when the interface only selects files locally."
          ],
          "option_guidance": {
            "option": "queue",
            "composition_delta": "Clearly labelled sample rows demonstrate selection layout; no fake upload progress.",
            "semantic_change": "changes content relationship",
            "matching_instruction": "Select S107 queue when the supplied material answers “What does each sample selection row mean before real files are chosen?” through sample input state and local selection. Respect this state: Clearly labelled sample rows demonstrate selection layout; no fake upload progress."
          },
          "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": [
              "adbe3d2be6dd332d348801f7c2100685ca93ea7f71ac43ac01c0a9b62f85501f",
              "cb2f41286d74ba9b9700c9e4e5e5146838e176026ee9cc726df5c369b1890783"
            ],
            "source_export": "private source images remain outside this draft site",
            "markup_sha256": "2fef15c3a352afc901108c69ba6cac0b8295629d082836c75567d266e4749d16",
            "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."
          ]
        },
        "narrative_profile": {
          "central_point": "A file-input surface explains what can be selected and reports the actual local selection state.",
          "communication_job": "Demonstrate the appearance of local selection rows before real files are chosen; keep example status explicit.",
          "audience_value": "Offers operational reassurance. It answers “Can I select this file?” and “Has it been uploaded?”; selection is explicitly local and provides no transfer result.",
          "reading_path": [
            "Read title and instruction for purpose and handling.",
            "Use the drop target or native picker to select supported files.",
            "Inspect the actual queue and validation feedback.",
            "Remove incorrect selections; do not infer an upload from a selected state."
          ],
          "adaptation": {
            "required_inputs": [
              "Names the local file-selection task.",
              "States accepted material and the fact that selection stays local.",
              "Zero or more actual selected file rows, derived from selection; never fabricate upload progress or successful transfer."
            ],
            "slot_guidance": {
              "title": "Names the local file-selection task.",
              "instruction": "States accepted material and the fact that selection stays local.",
              "files": "Zero or more actual selected file rows, derived from selection; never fabricate upload progress or successful transfer."
            },
            "can_change": [
              "Replace the fictional subject and its supported content while retaining the roles and relationship described here."
            ],
            "must_survive": [
              "Keep local-selection and upload states distinct.",
              "Preserve type/size validation and truthful errors.",
              "Queue rows must identify actual selections or explicitly labelled examples.",
              "No network destination exists in this composition; production behaviour must be implemented and disclosed."
            ]
          },
          "worked_example": {
            "fictional": true,
            "scenario": "Fictional Cedar previews two materials before choosing a real sharing workflow.",
            "slot_fills": {
              "title": "Select workshop materials",
              "instruction": "Choose images or documents for a local preview. Nothing uploads from this example; keep each file within 10 MiB.",
              "files": []
            },
            "reasoning": "No actual files are selected in this example. The separate sample queue can demonstrate image.png and document.pdf rows only if they remain labelled “not a selected file”.",
            "qualification": "Fictional teaching example. Replace invented details with authorised content and keep any source, scope, status or uncertainty that affects interpretation."
          },
          "narrative_fit": {
            "before": "Explain the intended preparation task and supported file types.",
            "after": "Connect a real upload destination only through a separately implemented workflow.",
            "good_uses": [
              "A local selection preview.",
              "A file-intake UI demonstration."
            ],
            "poor_fits": [
              "A working upload promise with no destination.",
              "Sensitive-data handling inferred from visual reassurance alone."
            ]
          },
          "evidence": {
            "observations": [
              "Viewed source and source-focus captures: a title/instruction and broad file drop target with an active border.",
              "Current HTML says files stay in the browser and contains separate actual and sample queues; accepted formats and 10 MiB limit are visible.",
              "Current option markup/CSS: Demonstrate the appearance of local selection rows before real files are chosen; keep example status explicit."
            ],
            "interpretations": [
              "A file-input surface explains what can be selected and reports the actual local selection state. 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/S107-halo-dropzone/source.webp",
              "02_product/spreads-semantics-2026-10-13/dist/S107-halo-dropzone/spread.html",
              "02_product/spreads-semantics-2026-10-13/dist/S107-halo-dropzone/spread.json",
              "https://www.cult-ui.com/docs/components/halo-dropzone"
            ]
          },
          "review": {
            "status": "reviewed",
            "basis": "Viewed base source capture; inspected this option’s current markup, CSS and matching contract. No distinct option-source capture reviewed unless explicitly stated in observations."
          },
          "variation_relationship": "same-job"
        },
        "required_content": [
          "Names the local file-selection task.",
          "States accepted material and the fact that selection stays local.",
          "Zero or more actual selected file rows, derived from selection; never fabricate upload progress or successful transfer."
        ],
        "requires_before": [
          "Explain the intended preparation task and supported file types."
        ],
        "enables_after": [
          "Connect a real upload destination only through a separately implemented workflow."
        ],
        "avoid_when": [
          "A working upload promise with no destination.",
          "Sensitive-data handling inferred from visual reassurance alone."
        ]
      },
      "thumbnails": {
        "audience_question": "Which selected images can I preview locally?",
        "intent": "Inspect local image previews without implying remote transfer.",
        "reader_outcome": "Inspect local image previews without implying remote transfer.",
        "reasoning_relation": "local selection and image preview",
        "slot_roles": {
          "title": "Names the local file-selection task.",
          "instruction": "States accepted material and the fact that selection stays local.",
          "files": "Zero or more actual selected file rows, derived from selection; never fabricate upload progress or successful transfer."
        },
        "matching": {
          "audience_question": "Which selected images can I preview locally?",
          "reader_outcome": "Inspect local image previews without implying remote transfer.",
          "reasoning_relation": "local selection and image preview",
          "content_shape": {
            "composition": "Centered title and instruction above a broad rounded file target with flowing lower-rim light, an active border trail and a queue below.",
            "selected_state": "Source-supported image preview inside the target; local object URLs only. Example file is explicitly labelled.",
            "density": "compact",
            "columns": 1,
            "column_note": "Base metadata only; selected option can replace the base geometry."
          },
          "required_slots": [
            {
              "name": "title",
              "reader_question": "Which selected images can I preview locally?",
              "semantic_role": "Names the local file-selection task.",
              "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 · title · short action heading]",
              "layout_budget": {
                "authored": "under 5 words",
                "policy": "Working composition guidance: preserve scope and qualification; change layout rather than truncate the argument."
              },
              "markup": {
                "slot": "title",
                "occurrences": 1,
                "annotation_status": "present",
                "visibility_status": "not asserted from static parsing",
                "sample_word_counts": [
                  2
                ]
              }
            },
            {
              "name": "instruction",
              "reader_question": "What does the instruction contribute to this page’s reader outcome?",
              "semantic_role": "States accepted material and the fact that selection stays local.",
              "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 · instruction · what to select and where it goes]",
              "layout_budget": {
                "authored": "under 25 words",
                "policy": "Working composition guidance: preserve scope and qualification; change layout rather than truncate the argument."
              },
              "markup": {
                "slot": "instruction",
                "occurrences": 1,
                "annotation_status": "present",
                "visibility_status": "not asserted from static parsing",
                "sample_word_counts": [
                  16
                ]
              }
            },
            {
              "name": "files",
              "reader_question": "What does the files contribute to this page’s reader outcome?",
              "semantic_role": "Zero or more actual selected file rows, derived from selection; never fabricate upload progress or successful transfer.",
              "content_unit_count": {
                "min": 0,
                "max": null,
                "basis": "authored composition members where a repeated group is specified; otherwise one named slot; not a required amount of evidence"
              },
              "placeholder": "[REAL CONTENT · files · actual filenames, byte sizes and removal controls; read halo.js and motion-native.json; selection stays local until a separately specified uploader is connected]",
              "layout_budget": {
                "authored": "one row per file",
                "policy": "Working composition guidance: preserve scope and qualification; change layout rather than truncate the argument."
              },
              "markup": {
                "slot": "files",
                "occurrences": 1,
                "annotation_status": "present",
                "visibility_status": "not asserted from static parsing",
                "sample_word_counts": [
                  0
                ]
              }
            }
          ],
          "rejection_constraints": [
            "Object URLs represented as uploaded resources or image previews leaking to a remote service.",
            "Claiming upload, processing or success when the interface only selects files locally."
          ],
          "option_guidance": {
            "option": "thumbnails",
            "composition_delta": "Source-supported image preview inside the target; local object URLs only. Example file is explicitly labelled.",
            "semantic_change": "changes content relationship",
            "matching_instruction": "Select S107 thumbnails when the supplied material answers “Which selected images can I preview locally?” through local selection and image preview. Respect this state: Source-supported image preview inside the target; local object URLs only. Example file is explicitly labelled."
          },
          "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": [
              "adbe3d2be6dd332d348801f7c2100685ca93ea7f71ac43ac01c0a9b62f85501f",
              "cb2f41286d74ba9b9700c9e4e5e5146838e176026ee9cc726df5c369b1890783"
            ],
            "source_export": "private source images remain outside this draft site",
            "markup_sha256": "2fef15c3a352afc901108c69ba6cac0b8295629d082836c75567d266e4749d16",
            "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."
          ]
        },
        "narrative_profile": {
          "central_point": "A file-input surface explains what can be selected and reports the actual local selection state.",
          "communication_job": "Let a reader recognise selected images through local previews while preserving the same local-only handling rule.",
          "audience_value": "Offers operational reassurance. It answers “Can I select this file?” and “Has it been uploaded?”; selection is explicitly local and provides no transfer result.",
          "reading_path": [
            "Read title and instruction for purpose and handling.",
            "Use the drop target or native picker to select supported files.",
            "Inspect the actual queue and validation feedback.",
            "Remove incorrect selections; do not infer an upload from a selected state."
          ],
          "adaptation": {
            "required_inputs": [
              "Names the local file-selection task.",
              "States accepted material and the fact that selection stays local.",
              "Zero or more actual selected file rows, derived from selection; never fabricate upload progress or successful transfer."
            ],
            "slot_guidance": {
              "title": "Names the local file-selection task.",
              "instruction": "States accepted material and the fact that selection stays local.",
              "files": "Zero or more actual selected file rows, derived from selection; never fabricate upload progress or successful transfer."
            },
            "can_change": [
              "Replace the fictional subject and its supported content while retaining the roles and relationship described here."
            ],
            "must_survive": [
              "Keep local-selection and upload states distinct.",
              "Preserve type/size validation and truthful errors.",
              "Queue rows must identify actual selections or explicitly labelled examples.",
              "No network destination exists in this composition; production behaviour must be implemented and disclosed.",
              "Preview only locally selected images using local object URLs; a sample thumbnail must remain labelled as an example."
            ]
          },
          "worked_example": {
            "fictional": true,
            "scenario": "Fictional Cedar previews two materials before choosing a real sharing workflow.",
            "slot_fills": {
              "title": "Select workshop materials",
              "instruction": "Choose images or documents for a local preview. Nothing uploads from this example; keep each file within 10 MiB.",
              "files": [
                "Fictional selected image row: room-layout.png — local image preview, not uploaded."
              ]
            },
            "reasoning": "The row confirms a local browser state, not receipt by a server. Sample rows must be labelled examples until actual user selection creates them.",
            "qualification": "Fictional teaching example. Replace invented details with authorised content and keep any source, scope, status or uncertainty that affects interpretation."
          },
          "narrative_fit": {
            "before": "Explain the intended preparation task and supported file types.",
            "after": "Connect a real upload destination only through a separately implemented workflow.",
            "good_uses": [
              "A local selection preview.",
              "A file-intake UI demonstration."
            ],
            "poor_fits": [
              "A working upload promise with no destination.",
              "Sensitive-data handling inferred from visual reassurance alone."
            ]
          },
          "evidence": {
            "observations": [
              "Viewed source and source-focus captures: a title/instruction and broad file drop target with an active border.",
              "Current HTML says files stay in the browser and contains separate actual and sample queues; accepted formats and 10 MiB limit are visible.",
              "Current option markup/CSS: Let a reader recognise selected images through local previews while preserving the same local-only handling rule."
            ],
            "interpretations": [
              "A file-input surface explains what can be selected and reports the actual local selection state. 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/S107-halo-dropzone/source.webp",
              "02_product/spreads-semantics-2026-10-13/dist/S107-halo-dropzone/spread.html",
              "02_product/spreads-semantics-2026-10-13/dist/S107-halo-dropzone/spread.json",
              "https://www.cult-ui.com/docs/components/halo-dropzone"
            ]
          },
          "review": {
            "status": "reviewed",
            "basis": "Viewed base source capture; inspected this option’s current markup, CSS and matching contract. No distinct option-source capture reviewed unless explicitly stated in observations."
          },
          "variation_relationship": "same-job"
        },
        "required_content": [
          "Names the local file-selection task.",
          "States accepted material and the fact that selection stays local.",
          "Zero or more actual selected file rows, derived from selection; never fabricate upload progress or successful transfer."
        ],
        "requires_before": [
          "Explain the intended preparation task and supported file types."
        ],
        "enables_after": [
          "Connect a real upload destination only through a separately implemented workflow."
        ],
        "avoid_when": [
          "A working upload promise with no destination.",
          "Sensitive-data handling inferred from visual reassurance alone."
        ]
      }
    },
    "narrative_profile": {
      "central_point": "A file-input surface explains what can be selected and reports the actual local selection state.",
      "communication_job": "Help a person choose files and understand where those files have, and have not, gone.",
      "audience_value": "Offers operational reassurance. It answers “Can I select this file?” and “Has it been uploaded?”; selection is explicitly local and provides no transfer result.",
      "reading_path": [
        "Read title and instruction for purpose and handling.",
        "Use the drop target or native picker to select supported files.",
        "Inspect the actual queue and validation feedback.",
        "Remove incorrect selections; do not infer an upload from a selected state."
      ],
      "adaptation": {
        "required_inputs": [
          "Names the local file-selection task.",
          "States accepted material and the fact that selection stays local.",
          "Zero or more actual selected file rows, derived from selection; never fabricate upload progress or successful transfer."
        ],
        "slot_guidance": {
          "title": "Names the local file-selection task.",
          "instruction": "States accepted material and the fact that selection stays local.",
          "files": "Zero or more actual selected file rows, derived from selection; never fabricate upload progress or successful transfer."
        },
        "can_change": [
          "Replace the fictional subject and its supported content while retaining the roles and relationship described here."
        ],
        "must_survive": [
          "Keep local-selection and upload states distinct.",
          "Preserve type/size validation and truthful errors.",
          "Queue rows must identify actual selections or explicitly labelled examples.",
          "No network destination exists in this composition; production behaviour must be implemented and disclosed."
        ]
      },
      "worked_example": {
        "fictional": true,
        "scenario": "Fictional Cedar previews two materials before choosing a real sharing workflow.",
        "slot_fills": {
          "title": "Select workshop materials",
          "instruction": "Choose images or documents for a local preview. Nothing uploads from this example; keep each file within 10 MiB.",
          "files": [
            "Fictional selected row: intake-checklist.pdf — selected locally, not uploaded.",
            "Fictional selected row: room-layout.png — selected locally, not uploaded."
          ]
        },
        "reasoning": "The row confirms a local browser state, not receipt by a server. Sample rows must be labelled examples until actual user selection creates them.",
        "qualification": "Fictional teaching example. Replace invented details with authorised content and keep any source, scope, status or uncertainty that affects interpretation."
      },
      "narrative_fit": {
        "before": "Explain the intended preparation task and supported file types.",
        "after": "Connect a real upload destination only through a separately implemented workflow.",
        "good_uses": [
          "A local selection preview.",
          "A file-intake UI demonstration."
        ],
        "poor_fits": [
          "A working upload promise with no destination.",
          "Sensitive-data handling inferred from visual reassurance alone."
        ]
      },
      "evidence": {
        "observations": [
          "Viewed source and source-focus captures: a title/instruction and broad file drop target with an active border.",
          "Current HTML says files stay in the browser and contains separate actual and sample queues; accepted formats and 10 MiB limit are visible."
        ],
        "interpretations": [
          "A file-input surface explains what can be selected and reports the actual local selection state. 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/S107-halo-dropzone/source.webp",
          "02_product/spreads-semantics-2026-10-13/dist/S107-halo-dropzone/spread.html",
          "02_product/spreads-semantics-2026-10-13/dist/S107-halo-dropzone/spread.json",
          "https://www.cult-ui.com/docs/components/halo-dropzone"
        ]
      },
      "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."
      },
      "variation_relationship": "base"
    }
  },
  "behaviour": {
    "script": "halo.js",
    "record": "motion-native.json",
    "reduced_motion": "Static halo and complete selection content; no moving trail, bob, blur or crossfade.",
    "no_script": "Native local file input plus complete explanatory copy; queued example option remains visible.",
    "network": "No file transmission; no upload endpoint.",
    "limits": "10 MiB per file; accepted file extensions and raster image MIME checked on selection and drop; six thumbnails maximum, all queue rows retained."
  },
  "options": [
    {
      "id": "queue",
      "what": "Clearly labelled sample rows demonstrate selection layout; no fake upload progress."
    },
    {
      "id": "thumbnails",
      "what": "Source-supported image preview inside the target; local object URLs only. Example file is explicitly labelled."
    }
  ],
  "also_seen_in": [],
  "source": {
    "ref": "Cult UI Halo Dropzone",
    "url": "https://www.cult-ui.com/docs/components/halo-dropzone"
  }
}
