From a67735f1213b3bd7deb343319408390bb2f52b26 Mon Sep 17 00:00:00 2001 From: Jared Knowles Date: Sat, 8 Aug 2026 17:46:39 -0400 Subject: [PATCH] chore: release metadata -- author of record, URLs, schema ceiling, 0.3.0 Authors@R was an org with no human, so citation() and the r-universe maintainer page had nothing to render and ORCID could not collate this with merTools. The given-name vector c("Jared", "E.") matches merTools exactly; person("Jared", "E. Knowles") would render the same but put the middle initial in the family-name slot. MaxCorpusSchema claimed 5 while .validate_schema() accepts 4-7 and the published corpus is 7 -- metadata contradicting code by two versions. 0.3.0 rather than 0.2.0: remote reads go from broken to working and the default URL from placeholder to live, which is user-visible behaviour. --- DESCRIPTION | 15 +++++++++++---- tests/testthat/test-config.R | 21 +++++++++++++++++++++ 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 8ccdcc3..7159bab 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,14 +1,21 @@ Package: uscogdata Type: Package Title: Curated Reader for the Civilytics US Census of Governments Finance Corpus -Version: 0.2.0 -Authors@R: - person("Civilytics", , , "jknowles@gmail.com", role = c("aut", "cre")) +Version: 0.3.0 +Authors@R: c( + person(c("Jared", "E."), "Knowles", + email = "jared@civilytics.com", + role = c("aut", "cre"), + comment = c(ORCID = "0000-0003-0005-9478")), + person("Civilytics Consulting LLC", role = c("cph", "fnd"))) Description: Curated R verbs over the Civilytics US Census of Governments finance corpus. Provides unit-level financial profiles, geographic rollups, and peer comparisons with auditable provenance and built-in cross-vintage correctness. License: MIT + file LICENSE +URL: https://github.com/civilytics/uscogdata, + https://civilytics.r-universe.dev/uscogdata +BugReports: https://github.com/civilytics/uscogdata/issues Encoding: UTF-8 LazyData: false Depends: R (>= 4.1) @@ -32,4 +39,4 @@ Config/testthat/edition: 3 VignetteBuilder: knitr RoxygenNote: 7.3.3 MinCorpusSchema: 4 -MaxCorpusSchema: 5 +MaxCorpusSchema: 7 diff --git a/tests/testthat/test-config.R b/tests/testthat/test-config.R index 45579e9..c82d840 100644 --- a/tests/testthat/test-config.R +++ b/tests/testthat/test-config.R @@ -87,3 +87,24 @@ test_that("an explicitly-set sentinel URL still aborts", { class = "uscogdata_url_not_configured" ) }) + +test_that("DESCRIPTION carries release metadata", { + skip_if_no_source_tree("DESCRIPTION") + d <- read.dcf(source_tree_path("DESCRIPTION")) + fields <- colnames(d) + + expect_true(all(c("URL", "BugReports") %in% fields)) + expect_match(d[1, "Authors@R"], "Knowles", fixed = TRUE) + expect_match(d[1, "Authors@R"], "0000-0003-0005-9478", fixed = TRUE) + expect_match(d[1, "Authors@R"], "Civilytics Consulting LLC", fixed = TRUE) + + # The gate in .validate_schema() accepts up to 7 and the published corpus + # IS 7; DESCRIPTION must not claim otherwise. + expect_equal(as.integer(d[1, "MaxCorpusSchema"]), 7L) + + # Authors@R must actually parse -- a malformed person() call is only + # caught at citation()/build time otherwise. + people <- eval(parse(text = d[1, "Authors@R"])) + expect_s3_class(people, "person") + expect_true("cre" %in% unlist(lapply(people, function(p) p$role))) +})