{
  "_id": "6a260ca2794753ddbc3e3bf0",
  "Package": "dqcheckr",
  "Type": "Package",
  "Title": "Automated Data Quality Checks for Recurring Dataset Deliveries",
  "Version": "0.2.1",
  "Date": "2026-06-03",
  "Authors@R": "person(\"Mick\", \"Mioduszewski\",\nemail = \"mick@mioduszewski.net\",\nrole  = c(\"aut\", \"cre\"))",
  "Description": "Automates quality verification of recurring external\ndataset deliveries. For each new file arrival, it runs\nsingle-snapshot quality checks, compares the file to the\nprevious delivery, writes a self-contained 'HTML' report, and\nrecords summary statistics in a local 'SQLite' database for\nlong-term trend tracking. Supports 'CSV' and fixed-width\nformats. Custom organisation-specific checks can be supplied as\nplain R files.",
  "License": "MIT + file LICENSE",
  "URL": "https://github.com/mickmioduszewski/dqcheckr",
  "BugReports": "https://github.com/mickmioduszewski/dqcheckr/issues",
  "Encoding": "UTF-8",
  "Language": "en-GB",
  "VignetteBuilder": "knitr",
  "Config/testthat/edition": "3",
  "Config/roxygen2/version": "8.0.0",
  "Config/pak/sysreqs": "cmake libfontconfig1-dev libfreetype6-dev\nlibfribidi-dev make libharfbuzz-dev libicu-dev libpng-dev\nlibuv1-dev libxml2-dev libx11-dev",
  "Repository": "https://mickmioduszewski.r-universe.dev",
  "Date/Publication": "2026-06-08 00:03:22 UTC",
  "RemoteUrl": "https://github.com/mickmioduszewski/dqcheckr",
  "RemoteRef": "HEAD",
  "RemoteSha": "2eac68911b27335f249b55a8636a144c3a15ccb0",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-06-08 00:23:50 UTC",
    "User": "root"
  },
  "Author": "Mick Mioduszewski [aut, cre]",
  "Maintainer": "Mick Mioduszewski <mick@mioduszewski.net>",
  "MD5sum": "6042ae43dac4eea23b5cbc9fd9e78e39",
  "_user": "mickmioduszewski",
  "_type": "src",
  "_file": "dqcheckr_0.2.1.tar.gz",
  "_fileid": "b31ebee49fc086be931a1a6a70915ac4ee4a5e26a34b4656e7b9e541025d4bca",
  "_filesize": 261833,
  "_sha256": "b31ebee49fc086be931a1a6a70915ac4ee4a5e26a34b4656e7b9e541025d4bca",
  "_created": "2026-06-08T00:23:50.000Z",
  "_published": "2026-06-08T00:28:18.407Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 80004136879,
      "time": 183,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "ERROR",
      "artifact": "7469434668"
    },
    {
      "job": 80004136881,
      "time": 166,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "ERROR",
      "artifact": "7469432423"
    },
    {
      "job": 80004136880,
      "time": 135,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "ERROR",
      "artifact": "7469428045"
    },
    {
      "job": 80004136887,
      "time": 159,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "ERROR",
      "artifact": "7469431370"
    },
    {
      "job": 80003937340,
      "time": 179,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7469410464"
    },
    {
      "job": 80004136882,
      "time": 127,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7469427071"
    },
    {
      "job": 80004136889,
      "time": 236,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "ERROR",
      "artifact": "7469441607"
    },
    {
      "job": 80004136891,
      "time": 154,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "ERROR",
      "artifact": "7469430899"
    },
    {
      "job": 80004136892,
      "time": 203,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "ERROR",
      "artifact": "7469437341"
    }
  ],
  "_buildurl": "https://github.com/r-universe/mickmioduszewski/actions/runs/27109297854",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/mickmioduszewski/dqcheckr",
  "_commit": {
    "id": "2eac68911b27335f249b55a8636a144c3a15ccb0",
    "author": "Mick Mioduszewski <mick@mioduszewski.net>",
    "committer": "Mick Mioduszewski <mick@mioduszewski.net>",
    "message": "cran-comments.md: record win-builder R-devel and R-release results\n\nBoth came back clean (Status: OK, 0 errors | 0 warnings | 0 notes):\n- R-devel: R Under development (unstable), 2026-06-06 r90114 ucrt\n- R-release: R 4.6.0, 2026-04-24 ucrt\n\ndqcheckr 0.2.1 is now fully checked across all three target environments\nand ready for CRAN resubmission.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>\n",
    "time": 1780877002
  },
  "_maintainer": {
    "name": "Mick Mioduszewski",
    "email": "mick@mioduszewski.net",
    "login": "mickmioduszewski",
    "description": "",
    "uuid": 539626
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.2",
      "role": "Depends"
    },
    {
      "package": "readr",
      "role": "Imports"
    },
    {
      "package": "DBI",
      "role": "Imports"
    },
    {
      "package": "RSQLite",
      "role": "Imports"
    },
    {
      "package": "quarto",
      "role": "Imports"
    },
    {
      "package": "knitr",
      "role": "Imports"
    },
    {
      "package": "kableExtra",
      "role": "Imports"
    },
    {
      "package": "ggplot2",
      "role": "Imports"
    },
    {
      "package": "gridExtra",
      "role": "Imports"
    },
    {
      "package": "dplyr",
      "role": "Imports"
    },
    {
      "package": "tidyr",
      "role": "Imports"
    },
    {
      "package": "yaml",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "version": ">= 3.1.0",
      "role": "Suggests"
    },
    {
      "package": "withr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    }
  ],
  "_owner": "mickmioduszewski",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-23",
      "n": 24
    },
    {
      "week": "2026-24",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "v0.2.0",
      "date": "2026-06-01"
    },
    {
      "name": "v0.2.1",
      "date": "2026-06-03"
    }
  ],
  "_stars": 1,
  "_contributors": [
    {
      "user": "mickmioduszewski",
      "count": 25,
      "uuid": 539626
    }
  ],
  "_userbio": {
    "uuid": 539626,
    "type": "user",
    "name": "Mick Mioduszewski"
  },
  "_downloads": {
    "count": 296,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/dqcheckr"
  },
  "_devurl": "https://github.com/mickmioduszewski/dqcheckr",
  "_searchresults": 0,
  "_quarto": true,
  "_topics": [
    "quarto"
  ],
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/dqcheckr.html",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/mickmioduszewski/dqcheckr",
  "_realowner": "mickmioduszewski",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.1.2",
      "date": "2026-05-20"
    },
    {
      "version": "0.2.0",
      "date": "2026-06-01"
    }
  ],
  "_exports": [
    "check_allowed_values",
    "check_col_count",
    "check_distinct_counts",
    "check_duplicate_rows",
    "check_empty_column",
    "check_inferred_types",
    "check_key_uniqueness",
    "check_min_row_count",
    "check_missing_rate",
    "check_non_numeric",
    "check_numeric_bounds",
    "check_numeric_stats",
    "check_outliers",
    "check_pattern",
    "check_row_count",
    "check_schema_contract",
    "compare_snapshots",
    "detect_files",
    "dq_result",
    "infer_col_type",
    "list_snapshots",
    "load_config",
    "overall_status",
    "read_dataset",
    "read_recent_snapshots",
    "resolve_col_type",
    "run_comparison_checks",
    "run_custom_checks",
    "run_dq_check",
    "run_qc_checks"
  ],
  "_help": [
    {
      "page": "check_allowed_values",
      "title": "QC-09: Check for values outside the allowed set",
      "topics": [
        "check_allowed_values"
      ]
    },
    {
      "page": "check_col_count",
      "title": "QC-05: Report column count",
      "topics": [
        "check_col_count"
      ]
    },
    {
      "page": "check_distinct_counts",
      "title": "QC-08: Report distinct value counts for character columns",
      "topics": [
        "check_distinct_counts"
      ]
    },
    {
      "page": "check_duplicate_rows",
      "title": "QC-03: Check for fully-duplicate rows",
      "topics": [
        "check_duplicate_rows"
      ]
    },
    {
      "page": "check_empty_column",
      "title": "QC-02: Check for entirely empty columns",
      "topics": [
        "check_empty_column"
      ]
    },
    {
      "page": "check_inferred_types",
      "title": "QC-06: Report inferred column types",
      "topics": [
        "check_inferred_types"
      ]
    },
    {
      "page": "check_key_uniqueness",
      "title": "QC-12: Check uniqueness of key column(s)",
      "topics": [
        "check_key_uniqueness"
      ]
    },
    {
      "page": "check_min_row_count",
      "title": "QC-14: Check row count bounds and optional file size",
      "topics": [
        "check_min_row_count"
      ]
    },
    {
      "page": "check_missing_rate",
      "title": "QC-01: Check missing rate per column",
      "topics": [
        "check_missing_rate"
      ]
    },
    {
      "page": "check_non_numeric",
      "title": "QC-11: Check non-numeric rate in numeric columns",
      "topics": [
        "check_non_numeric"
      ]
    },
    {
      "page": "check_numeric_bounds",
      "title": "QC-10: Check for out-of-range numeric values",
      "topics": [
        "check_numeric_bounds"
      ]
    },
    {
      "page": "check_numeric_stats",
      "title": "QC-07: Report numeric summary statistics",
      "topics": [
        "check_numeric_stats"
      ]
    },
    {
      "page": "check_outliers",
      "title": "QC-15: Detect statistical outliers in numeric columns",
      "topics": [
        "check_outliers"
      ]
    },
    {
      "page": "check_pattern",
      "title": "QC-13: Check values against a regex pattern",
      "topics": [
        "check_pattern"
      ]
    },
    {
      "page": "check_row_count",
      "title": "QC-04: Report row count",
      "topics": [
        "check_row_count"
      ]
    },
    {
      "page": "check_schema_contract",
      "title": "SC-01 / SC-02: Check columns against the expected schema contract",
      "topics": [
        "check_schema_contract"
      ]
    },
    {
      "page": "compare_snapshots",
      "title": "Compare two snapshots from the SQLite database",
      "topics": [
        "compare_snapshots"
      ]
    },
    {
      "page": "detect_files",
      "title": "Detect current and previous dataset files",
      "topics": [
        "detect_files"
      ]
    },
    {
      "page": "dq_result",
      "title": "Construct a data quality result object",
      "topics": [
        "dq_result"
      ]
    },
    {
      "page": "infer_col_type",
      "title": "Infer the logical type of a character column",
      "topics": [
        "infer_col_type"
      ]
    },
    {
      "page": "list_snapshots",
      "title": "List snapshots available in the database",
      "topics": [
        "list_snapshots"
      ]
    },
    {
      "page": "load_config",
      "title": "Load and merge dataset configuration",
      "topics": [
        "load_config"
      ]
    },
    {
      "page": "overall_status",
      "title": "Compute the worst status across a list of dq_result objects",
      "topics": [
        "overall_status"
      ]
    },
    {
      "page": "read_dataset",
      "title": "Read a dataset file into a data frame",
      "topics": [
        "read_dataset"
      ]
    },
    {
      "page": "read_recent_snapshots",
      "title": "Read recent snapshot history from the SQLite database",
      "topics": [
        "read_recent_snapshots"
      ]
    },
    {
      "page": "resolve_col_type",
      "title": "Resolve the effective type of a column, respecting config overrides",
      "topics": [
        "resolve_col_type"
      ]
    },
    {
      "page": "run_comparison_checks",
      "title": "Run all version comparison checks between two dataset snapshots",
      "topics": [
        "run_comparison_checks"
      ]
    },
    {
      "page": "run_custom_checks",
      "title": "Run organisation-specific custom checks",
      "topics": [
        "run_custom_checks"
      ]
    },
    {
      "page": "run_dq_check",
      "title": "Run a full data quality check pipeline",
      "topics": [
        "run_dq_check"
      ]
    },
    {
      "page": "run_qc_checks",
      "title": "Run all generic quality checks on a dataset",
      "topics": [
        "run_qc_checks"
      ]
    }
  ],
  "_readme": "https://github.com/mickmioduszewski/dqcheckr/raw/HEAD/README.md",
  "_rundeps": [
    "base64enc",
    "bit",
    "bit64",
    "blob",
    "bslib",
    "cachem",
    "cli",
    "clipr",
    "cpp11",
    "crayon",
    "DBI",
    "digest",
    "dplyr",
    "evaluate",
    "farver",
    "fastmap",
    "fontawesome",
    "fs",
    "generics",
    "ggplot2",
    "glue",
    "gridExtra",
    "gtable",
    "highr",
    "hms",
    "htmltools",
    "isoband",
    "jquerylib",
    "jsonlite",
    "kableExtra",
    "knitr",
    "labeling",
    "later",
    "lifecycle",
    "magrittr",
    "memoise",
    "mime",
    "pillar",
    "pkgconfig",
    "prettyunits",
    "processx",
    "progress",
    "ps",
    "purrr",
    "quarto",
    "R6",
    "rappdirs",
    "RColorBrewer",
    "Rcpp",
    "readr",
    "rlang",
    "rmarkdown",
    "RSQLite",
    "rstudioapi",
    "S7",
    "sass",
    "scales",
    "stringi",
    "stringr",
    "svglite",
    "systemfonts",
    "textshaping",
    "tibble",
    "tidyr",
    "tidyselect",
    "tinytex",
    "tzdb",
    "utf8",
    "vctrs",
    "viridisLite",
    "vroom",
    "withr",
    "xfun",
    "xml2",
    "yaml"
  ],
  "_vignettes": [
    {
      "source": "specification.Rmd",
      "filename": "specification.html",
      "title": "dqcheckr — Software Specification",
      "author": "Mick Mioduszewski",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Part A — Purpose and Intent",
        "Why this exists",
        "What we are building",
        "Design principles",
        "Part B — Business-Level Description",
        "B.1 How it is used",
        "B.2 What is checked",
        "B.3 What is compared to the previous delivery",
        "B.4 What is produced",
        "Part C — Technical Specification",
        "C.1 Package structure",
        "C.2 Configuration",
        "C.3 File version detection",
        "C.4 Ingestion and whitespace trimming",
        "C.5 Type inference",
        "C.6 Quality checks",
        "C.7 Custom checks",
        "C.8 SQLite schema",
        "C.9 Main entry points",
        "C.10 Error handling",
        "C.11 Dependencies",
        "Part D — Unresolved and Deferred Issues",
        "D.1 Needs design before implementation",
        "D.2 Backlog — agreed",
        "D.3 Known limitations"
      ],
      "created": "2026-06-01 05:33:41",
      "modified": "2026-06-07 23:43:27",
      "commits": 5
    },
    {
      "source": "dqcheckr.Rmd",
      "filename": "dqcheckr.html",
      "title": "Getting started with dqcheckr",
      "engine": "knitr::rmarkdown",
      "headings": [
        "How it works",
        "Installation",
        "Configuration",
        "Global config — dqcheckr.yml",
        "Per-dataset config — .yml",
        "What is required vs optional",
        "Fixed-width files",
        "The quality checks",
        "Single-snapshot checks (QC series)",
        "Schema contract checks (SC series)",
        "Version comparison checks (CP series)",
        "Type inference",
        "Running a check",
        "Calling individual checks",
        "Custom checks",
        "The snapshot database",
        "Worked example — Star Wars dataset",
        "Error handling",
        "Design principles"
      ],
      "created": "2026-06-01 05:33:41",
      "modified": "2026-06-01 07:52:14",
      "commits": 2
    }
  ],
  "_score": 4.301029995663981,
  "_indexed": true,
  "_nocasepkg": "dqcheckr",
  "_universes": [
    "mickmioduszewski"
  ],
  "_previous": "0.2.0",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.2.1",
      "date": "2026-06-08T00:26:16.000Z",
      "distro": "noble",
      "commit": "2eac68911b27335f249b55a8636a144c3a15ccb0",
      "fileid": "50f4522e9ad3b6fa1cbe05c02ff73ef98ae564a6d70820c2a4b1d43cf14fff1d",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/mickmioduszewski/actions/runs/27109297854"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.2.1",
      "date": "2026-06-08T00:25:57.000Z",
      "distro": "noble",
      "commit": "2eac68911b27335f249b55a8636a144c3a15ccb0",
      "fileid": "e600b7e1748baf2b634bedaee6c94f82fcd82ebccb281132538764b1fcdd5714",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/mickmioduszewski/actions/runs/27109297854"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.2.1",
      "date": "2026-06-08T00:25:44.000Z",
      "commit": "2eac68911b27335f249b55a8636a144c3a15ccb0",
      "fileid": "aa004357dfedb9f32fbe42f1f4fe6f5e77cdff1afba3d5266d86ba16f02c6681",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/mickmioduszewski/actions/runs/27109297854"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "0.2.1",
      "date": "2026-06-08T00:25:58.000Z",
      "commit": "2eac68911b27335f249b55a8636a144c3a15ccb0",
      "fileid": "8f4afc402944374b5f1882af2be4129ecd4df2eb52e7424f4519e3cd95c3eacb",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/mickmioduszewski/actions/runs/27109297854"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.2.1",
      "date": "2026-06-08T00:26:14.000Z",
      "commit": "2eac68911b27335f249b55a8636a144c3a15ccb0",
      "fileid": "fce35c4840e335bd67a3ca7b4812f5b0919800491c26308aa65a8fe6a1b37eef",
      "status": "success",
      "buildurl": "https://github.com/r-universe/mickmioduszewski/actions/runs/27109297854"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.2.1",
      "date": "2026-06-08T00:26:38.000Z",
      "commit": "2eac68911b27335f249b55a8636a144c3a15ccb0",
      "fileid": "053e79fd7d831510c12d17f6b24c371d62808efde25221e379e783673f25a294",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/mickmioduszewski/actions/runs/27109297854"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.2.1",
      "date": "2026-06-08T00:25:27.000Z",
      "commit": "2eac68911b27335f249b55a8636a144c3a15ccb0",
      "fileid": "a43517b7df552218d30e7851e47f43530b9ee1c9efc27bfb5057a5b1c886115e",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/mickmioduszewski/actions/runs/27109297854"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "0.2.1",
      "date": "2026-06-08T00:26:14.000Z",
      "commit": "2eac68911b27335f249b55a8636a144c3a15ccb0",
      "fileid": "eb246a791efee09d0b18696105426db09c59176e3a8a8e78b099e7be18f2dcbf",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/mickmioduszewski/actions/runs/27109297854"
    }
  ]
}