Changes in version 0.1.0 First release. It collects everything below, previously carried as unreleased development entries. - The validation result returned by dict_validate() no longer carries the decorative "qualtdict_validation" class: it is a plain list with the same documented validation_findings and level_label_pairs components, which remain the stable contract. No package code ever dispatched on the class. Other internal-only decorative classes on normalised records were dropped at the same time; the "qualtdict" class on generated Variable Dictionaries and the error class "qualtdict_export_blocking_findings" raised by assert_dict_valid() are unchanged. - The Semantic Name dependencies slowraker, SnowballC, stringi, tidyr, and openNLP moved from Imports to Suggests: the package now installs and runs its default variable_name = "question_name" path without them. dict_generate(variable_name = "semantic_name") fails fast with an actionable error when the optional packages are missing. Java (via openNLP and rJava) is needed only for POS-tag filtering, which Semantic Name generation does not use. - The Variable Dictionary returned by dict_generate() now names its Loop Option column looping_option instead of loop_option. The two names carried the same value and the internal duplicate is removed, so the dictionary keeps one name per concept (ADR 0010). - dict_generate() no longer accepts the pre-release compatibility arguments name and preprocess, nor the easy_name value. Use variable_name (with "question_name" or "semantic_name") and semantic_name_preprocess instead. The aliases warned on every use and are removed before the first release, so the package keeps one name per concept. - dict_generate() no longer fails on a Loop and Merge source choice whose label is blank or missing. Such a Loop Option now takes the source choice ID as its label instead of aborting Loop expansion for the whole survey. - dict_validate() output now classifies every Validation Finding by severity: "definite" when the finding makes the affected export column uninterpretable or its identity unreliable (the Export-blocking level-label codings, and inconsistent, duplicate, or unsafe final variable_name values), "suggestive" when the finding only reports something worth review while the column's data and identity stay sound (a repaired variable_name; a gapped level run). Severity is derived from the finding class on every normalisation, so it cannot drift, and an unrecognised class classifies as "definite" (fails closed). fetch_labelled_survey_data() gains exclude_findings = "definite", which drops only the rows carrying Definite Validation Findings and keeps every row whose findings are merely suggestive; "validation" keeps its existing drop-everything meaning. The pre-download assert_dict_valid() gate is skipped for both "definite" and "validation" (every Export-blocking Response Column ID is dropped after download under either), and it never aborts on Suggestive Validation Findings under any setting. - assert_dict_valid() is a new exported gate that errors when a Variable Dictionary carries Export-blocking Validation Findings: level-label codings where label and level are not one-to-one, one label is carried by several rows, or one level is carried by several rows. The error names every offending Response Column ID, its Dictionary Variable Name, and the colliding labels. A gapped level sequence is not Export-blocking. fetch_labelled_survey_data() now applies the gate before downloading responses, so a defective Variable Dictionary no longer aborts a whole survey deep inside labelling after the download is paid for; pass require_valid_dict = FALSE to download from a survey known to carry such findings. dict_validate() is unchanged and stays total: it reports every Validation Finding and never errors. - dict_generate() no longer declares a choice recode as the Level universe of a _DO_ display-order column. Qualtrics exports one such column per choice: the recode names the column and the cell holds the position at which that choice was displayed. These columns now declare no Level universe, carry the choice in item, and take a variable label but no value labels in fetch_labelled_survey_data(). - dict_generate() now resolves response-column-id parity with Qualtrics exports for embedded, Captcha, Text-entry/FORM, and carry-forward multiple-choice questions: colliding embedded fields honour the Qualtrics QSED export-rename, Captcha and analyze == FALSE text-entry fields are suppressed (no export column), and carry-forward multiple-choice export choiceIds are derived from survey-definition RecodeValues/DynamicChoices rather than sequential /surveys recodes. - dict_generate() now preserves question context while representing Embedded Data Fields when Qualtrics description metadata uses the blocks/questions structure returned by qualtRics::fetch_description(). - Local finalization smoke artifact refresh now captures Qualtrics embedded_data, scoring metadata, and response column-map metadata for Metadata-defined Export Variable inspection. - dict_generate() now represents Scoring Variables from Qualtrics survey description metadata as Metadata-defined Export Variable rows with row_source = "scoring". - dict_generate() now represents Text-analysis Sidecars from Qualtrics metadata as Metadata-defined Export Variable rows with row_source = "text_analysis" and parent question context when a clear parent QID is available. - dict_generate() now accepts embedded_data_block_assignment to optionally assign Survey Flow Embedded Data Fields to the nearest previous or next Survey Block while leaving them unassigned by default. - dict_generate() now represents flat Embedded Data Fields from Qualtrics metadata as Metadata-defined Export Variable rows with row_source = "embedded_data". - dict_split_blocks() and survey_split_blocks() now preserve unassigned Variable Dictionary rows in a "..unassigned" split. - Improved rOpenSci package-check readiness by narrowing package imports, cleaning examples, reducing duplicated parameter documentation, and removing unused internal helpers.