Conversation
…elop chore(ci): stabilize workflows and add public ci policy
- Updated dataflow dimension values - Enriched indicator metadata with dimension values - Auto-generated by GitHub Actions workflow Workflow: .github/workflows/metadata-sync.yml Triggered: push
fix: post-release housekeeping from Copilot review (PR #70) Synced from: jpazvd/unicefData-dev@0d0a2b0
release: v2.3.2 — Python version bump, version validation CI, metadata refresh Synced from: jpazvd/unicefData-dev@91e2dc2
fix(r): eliminate flaky R-CMD-check CI from live API calls Synced from: jpazvd/unicefData-dev@20c2344
# Conflicts: # .github/workflows/check.yaml # .github/workflows/metadata-sync.yml # .github/workflows/validate-schemas.yml
# Conflicts: # stata/src/_/_unicefdata_dataflow_metadata.yaml # stata/src/_/_unicefdata_sync_history.yaml
There was a problem hiding this comment.
Pull request overview
Release merge bringing develop → main for v2.3.2, including CI version validation, docs/metadata refresh, and R example hardening to reduce flaky checks.
Changes:
- Switched many R examples from
\donttest{}to\dontrun{}to avoid network/stateful execution during automated checks. - Added a PR-gating GitHub Action to validate version bumps and cross-platform consistency.
- Refreshed release/versions documentation and added an auto-generated component version manifest.
Reviewed changes
Copilot reviewed 30 out of 313 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| R/man/*.Rd | Updated documentation examples to \dontrun{}. |
| R/R/*.R | Updated roxygen examples to \dontrun{}. |
| R/doc/__COMPONENT_VERSIONS.yaml | Added generated component version manifest. |
| R/doc/VERSIONING_POLICY.md | Updated current-state versioning notes and CI enforcement section. |
| R/cran-comments.md | Updated CRAN submission notes re: examples policy. |
| R/CITATION.cff | Bumped citation version/date. |
| CHANGELOG.md | Added 2.3.2 repository release entry. |
| .github/workflows/versioning-check.yml | Added version validation workflow. |
| .github/workflows/r-scripted-tests.yaml | Adjusted path filters to R/** casing. |
| .github/workflow-config.yml | Removed workflow config file. |
| .github/scripts/load_workflow_config.py | Removed config loader script. |
| .github/RELEASE_GUIDE.md | Expanded release/versioning rules and guidance. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| python/pyproject.toml: 2.3.2 | ||
| python/unicefdata/__init__.py: 2.3.2 | ||
| r/CITATION.cff: 2.3.2 | ||
| r/DESCRIPTION: 2.3.0 |
There was a problem hiding this comment.
The manifest uses lowercase r/ paths (e.g., r/DESCRIPTION, r/R/...) but this repo’s R package directory appears to be R/ (uppercase), as reflected by other changes in this PR (workflow path filters and file paths). On case-sensitive filesystems (Linux CI), these entries won’t resolve and can break version-check tooling or confuse consumers. Regenerate or normalize the manifest to use the correct R/ casing consistently (and ensure the generator enforces canonical casing).
| r: | ||
| r/R/metadata_sync.R: 1.6.0 | ||
| r/R/unicef_core.R: 1.6.1 | ||
| r/R/unicefData.R: 2.0.0 | ||
| r/scripts/generate_metadata.R: 2.0.0 |
There was a problem hiding this comment.
The manifest uses lowercase r/ paths (e.g., r/DESCRIPTION, r/R/...) but this repo’s R package directory appears to be R/ (uppercase), as reflected by other changes in this PR (workflow path filters and file paths). On case-sensitive filesystems (Linux CI), these entries won’t resolve and can break version-check tooling or confuse consumers. Regenerate or normalize the manifest to use the correct R/ casing consistently (and ensure the generator enforces canonical casing).
|
|
||
| | Platform | Version file(s) | | ||
| |---|---| | ||
| | R | `r/DESCRIPTION` (`Version:` field) | |
There was a problem hiding this comment.
The R version-file path is documented as r/DESCRIPTION, but this repo uses R/DESCRIPTION (uppercase), and CI path filters were updated accordingly in this PR. Update the guide to reference R/DESCRIPTION (and any other r/ path mentions) to avoid incorrect instructions and mismatches with tooling.
| | R | `r/DESCRIPTION` (`Version:` field) | | |
| | R | `R/DESCRIPTION` (`Version:` field) | |
| python-version: '3.x' | ||
| - name: Run version bump checks | ||
| run: | | ||
| python scripts/check_versions.py origin/${{ github.base_ref }} --check-consistency |
There was a problem hiding this comment.
Using origin/${{ github.base_ref }} assumes the base branch ref is present locally after actions/checkout. That ref is not guaranteed to exist (especially for PRs from forks), which can cause this workflow to fail even when the code is correct. Prefer comparing against the base SHA from the event payload (e.g., github.event.pull_request.base.sha) or explicitly git fetch the base branch ref before invoking check_versions.py.
| python scripts/check_versions.py origin/${{ github.base_ref }} --check-consistency | |
| python scripts/check_versions.py ${{ github.event.pull_request.base.sha }} --check-consistency |
|
|
||
| on: | ||
| pull_request: | ||
| branches: [ main, develop, '**' ] |
There was a problem hiding this comment.
Including ** makes the job run for PRs targeting any base branch, which can increase CI cost/noise beyond main/develop. If the intent is to enforce versioning only on integration branches, drop the wildcard and keep [ main, develop ]; if the intent is truly all branches, remove the explicit main, develop entries for clarity.
| branches: [ main, develop, '**' ] | |
| branches: [ main, develop ] |
| #' \dontrun{ | ||
| #' clear_schema_cache() | ||
| #' # Cache: 0 items (0 MB) | ||
| #' } |
There was a problem hiding this comment.
These examples appear to be local-only (no network) and low cost; switching them to \\dontrun{} reduces the amount of executable documentation exercised by automated checks. Consider keeping local, deterministic examples as runnable (or \\donttest{} if they’re slightly slow) and reserving \\dontrun{} for examples that truly require network access or unavoidable stateful side effects.
| #' \dontrun{ | ||
| #' get_schema_cache_info() | ||
| #' } |
There was a problem hiding this comment.
These examples appear to be local-only (no network) and low cost; switching them to \\dontrun{} reduces the amount of executable documentation exercised by automated checks. Consider keeping local, deterministic examples as runnable (or \\donttest{} if they’re slightly slow) and reserving \\dontrun{} for examples that truly require network access or unavoidable stateful side effects.
- workflow-config.yml: public repo config (r_pkg_dir=R, sync disabled) - load_workflow_config.py: config loader required by reusable workflows - check_versions.py: version validation script for versioning-check workflow - r-scripted-tests.yaml: fix r/ → R/ path for public repo layout These files are required by the workflows synced from the dev repo but were not included in the sync whitelist. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- README.md: update version table (Python 2.3.2, Stata 2.3.1, R/ paths) - enforce_r_dir_policy.py: accept both R/ and r/ (public uses R/) - unicefdata.py: search both R/inst/ and r/inst/ for metadata - python/README.md: update "What's New" heading to 2.3.2 - __COMPONENT_VERSIONS.yaml: regenerated with R/ paths - update_component_versions.py: added to scripts/ Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- prepare_r_test_fixtures.py: required by R-CMD-check reusable workflow - validate_yaml_schema.py: required by validate-metadata workflow - RELEASE_GUIDE.md: r/DESCRIPTION → R/DESCRIPTION for public repo - versioning-check.yml: drop wildcard branch, use base SHA instead of origin/base_ref for fork compatibility Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
On case-sensitive filesystems (Linux CI), the script failed to write fixtures because it hardcoded r/ but the public repo uses R/. Now auto-detects the correct directory. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Pure rename of 295 tracked files. No content changes. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- workflow-config.yml: r_pkg_dir → r - r-scripted-tests.yaml: R/tests/ → r/tests/, path triggers R/** → r/** - RELEASE_GUIDE.md: R/DESCRIPTION → r/DESCRIPTION Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…or r/ - enforce_r_dir_policy.py: enforce canonical lowercase r/ - prepare_r_test_fixtures.py: extract fixtures to r/tests/ Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- README.md: R/ links → r/ links, version table updated - unicefdata.py: restore r/inst/ metadata search path Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Summary
Merges all outstanding work from develop into main, consolidating:
Synced from dev repo (PRs fix: rename R/ to r/ and update CI workflow paths #60, New features for country aggregates #62, chore(sync): Merge develop branch #64):
check_versions.py,versioning-check.yml)\donttest{}→\dontrun{}fix for flaky R-CMD-checkPublic repo CI hardening (PR chore(ci): stabilize workflows and add public ci policy #67):
Conflict resolution:
Current platform versions
Test plan
v2.3.2🤖 Generated with Claude Code