Skip to content

Spike: does washr::update_dictionary() preserve extra dictionary columns? #37

Description

@larnsce

Milestone: v1.3.0 (attach once the milestone exists). Blocking precondition for the rest of the v1.3.0 milestone. Part of the v1.1 roadmap: docs/roadmap-v1.1.md.

The premortem's adversarial counter-check found that data-raw/dictionary.csv is not a free file: washr generates and regenerates it in the 5-column format, and renders the README dictionary table from those columns. Any schema extension pkgreview mandates would be silently clobbered the next time a contributor reruns the washr dictionary tooling, turning the extension into per-review manual surgery. No dictionary schema work proceeds without this spike.

Correction from the 2026-07-12 cross-repo coherence review: washr::update_dictionary() does not exist yet. It is openwashdata/washr#13, scheduled in washr's v1.2.0 backlog with "extra user columns survive the round-trip" now an acceptance criterion there. This spike therefore has two parts with different preconditions.

Tasks

  • Part 1 (runnable today): on a real package, add extra columns (for example unit, allowed_values) to dictionary.csv, rerun the dictionary tooling that exists (washr::setup_dictionary() / washr:::fill_dictionary()), and diff. Document exactly what survives, what is dropped, and what is misaligned.
  • Part 2 (blocked on Feature request: updating an existing dictionary washr#13): repeat the round-trip with update_dictionary() once it ships; its acceptance criterion should make this pass by construction. If washr#13 has not shipped when v1.3.0 starts, evaluate Part 1's result alone.
  • If columns are dropped and washr will not preserve them: conclude that dictionary schema extensions are off the table and record that decision in this issue and in the roadmap.

Outcome

A documented round-trip result. Pass: extensions (#38, #39) may proceed. Fail with no washr fix committed to a milestone: the v1.3.0 schema extension issue is closed as not planned.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions