Motivation
Today nothing checks that data-raw/dictionary.csv still matches the data — a renamed column, a type change, or a new variable only gets caught by eye. With data-dict.yaml (#105) and parquet exports (#106) in place, the data-dict CLI can enforce dictionary–data consistency mechanically:
validate-spec — dictionary conforms to the YAML schema
validate-meta — column names/types match the parquet files
validate-data — values satisfy constraints (ranges, enum values, required, assertions)
Background: dev/research-data-dict-integration.md, section "Option B".
Proposal
Acceptance criteria
Caveat
The spec is v0.1.0 and may change; pin the CLI version in the workflow template.
Motivation
Today nothing checks that
data-raw/dictionary.csvstill matches the data — a renamed column, a type change, or a new variable only gets caught by eye. Withdata-dict.yaml(#105) and parquet exports (#106) in place, the data-dict CLI can enforce dictionary–data consistency mechanically:validate-spec— dictionary conforms to the YAML schemavalidate-meta— column names/types match the parquet filesvalidate-data— values satisfy constraints (ranges, enum values, required, assertions)Background: dev/research-data-dict-integration.md, section "Option B".
Proposal
uvx data-dictfrom PyPI) and run the three validate commandscheck_datadict()that looks for the binary onPATHand skips politely when absent — washr is on CRAN and cannot hard-depend on a Rust binary; this also fits thecheck_publication_readiness()gate design in check_publication_readiness(): workflow status gates (port fairenough's validate_* design) #82Acceptance criteria
Caveat
The spec is v0.1.0 and may change; pin the CLI version in the workflow template.