base: add inference-reporting + presentation set (gt, marginaleffects, patchwork, easystats)#16
Merged
Merged
Conversation
…, patchwork, easystats) All four are used pervasively in both PPBDS/primer's book/ and its tutorials, but pak never installed them: primer.tutorials lists them only as Suggests (not installed), except gt which arrived transitively via Imports. Students hit an install wall at the first library() call in a tutorial. General-purpose rather than course-specific, so they go in base per the established dividing line. Smoke test added. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…says otherwise Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…bake libuv1-dev The new root pak run (gt/marginaleffects/patchwork/easystats) left group-unreadable lock files under site-library/_cache, and the student image's rstudio-user course-package install then died with 'filelock::lock(): Cannot open lock file: Permission denied'. Delete the scratch _cache dir after root installs and chmod g+rwX (not just g+w) so group read/traverse can't be missing either. Also add libuv1-dev to the baked system libs: fs >= 2.1.0 declares libuv as a sysreq, and without it pak prints a phantom missing-package warning on nearly every student install (same class as the libnode-dev story). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Adds a small set of widely-used inference/reporting and presentation R packages to the base image (so they’re installed intentionally rather than incidentally), plus hardens the base R site-library permissions/caches to prevent downstream non-root pak installs from failing.
Changes:
- Install
gt,marginaleffects,patchwork, andeasystatsinbase, and add a smoke test to ensure they load. - Add
libuv1-devto silence recurringpaksysreq warnings tied tofs. - Remove
/usr/local/lib/R/site-library/_cacheand switch tochmod -R g+rwXto prevent group permission issues from root-created lock/cache artifacts; update CLAUDE.md release versioning policy.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| CLAUDE.md | Documents the new inference/presentation package set and updates release versioning guidance. |
| base/Dockerfile | Installs new R packages + libuv1-dev, adds a smoke test, and hardens site-library permissions/caches for downstream installs. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds four packages used pervasively in both PPBDS/primer's
book/and its tutorials (audit 2026-07) but never installed by pak — primer.tutorials lists them only in Suggests, exceptgtwhich arrived transitively via Imports:gt(1,100+gt::calls in the book — now a deliberate install, not a dependency accident)marginaleffects(the book's standard post-estimation workflow)patchwork(ggplot composition)easystats(parameters/performance/effectsize meta-package, used across the tutorials)General-purpose per the base-vs-student dividing line, so they live in base. Smoke test added.
Also in this PR, found by the first validation run:
site-library/_cache, killing the student layer's rstudio-user install withfilelock::lock(): Permission denied. Base now removes the scratch_cachedir and chmodsg+rwX(not justg+w).libuv1-dev—fs≥ 2.1.0 declares libuv as a sysreq and pak printed a phantom missing-package warning on nearly every install (libnode-dev class).Validation build: green across base/dev/student — https://github.com/PPBDS/devcontainers/actions/runs/28859972996
🤖 Generated with Claude Code