Skip to content

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 13 Aug 07:40
· 39 commits to main since this release
3fd7ebb

EpiAwarePackageTools v0.4.0

Diff since v0.3.0

This is a breaking release.

Release notes (draft)

Breaking

  • The formatter is Runic, not JuliaFormatter. .JuliaFormatter.toml is a retired path, so a sync deletes it. The isolated test/formatter environment pins Runic exactly, kept in step with the .pre-commit-config.yaml hook revision.
  • docs/pages.jl is now a managed base with extension points, regenerated on every sync. A package adds nav through PACKAGE_TUTORIALS, PACKAGE_SECTIONS, DEVELOPMENT_EXTEND_PAGE and GETTING_STARTED_FAQ in the package-owned docs/docs_config.jl. A bespoke pages.jl without the managed header is preserved and warned about rather than clobbered.
  • The AD-backends tutorial is retired. Its content is folded into the AD-comparison benchmark page, which now carries the ad-backends anchor so existing @ref links across the org keep resolving. A sync deletes the page and warns while a package still registers it.

Added

  • ReverseDiff (compiled) joins the managed AD backends, so the matrix, codecov flags, README badge row and scenario seeds all cover seven backends.
  • run_selected, a filtered AD scenario/backend runner, so one suspect combination can be checked without the full suite.
  • Per-tutorial documentation environments. A heavy tutorial can build against its own environment via TUTORIAL_ENVIRONMENTS, for a dependency that cannot co-resolve with the rest of the docs environment. Dependabot watches each one.
  • Agent files are AGENTS.md plus a CLAUDE.md pointer, both linking the standards docs rather than copying them, so there is one copy that cannot drift. The managed block is a single marker line.

Fixed

  • An AD backend with no test item no longer reports green. Adding a backend to the kit reached an adopter's CI, badges and coverage flags but not their write-once test seeds, so the new job ran zero tests, passed, and uploaded an empty coverage flag behind a public badge. update now names each unbacked tag, and a tag filter matching nothing is an error.
  • Enzyme codecov flags name the Enzyme extension, not the whole ext/ directory. The directory claim charged those jobs for every other extension: measured as -17% on a package with seven.
  • The generated Extensions nav entry gets a trailing comma, so a package with [extensions] no longer fails its own formatting check and then reverts on the next sync, looping forever.
  • update reports package-owned docs describing a retired standard. A sync converges the managed files and said nothing about the package's own prose, so a contributing guide could keep naming a tool the standard had moved off.
  • README prose checks no longer misread markup and abbreviations, and the extension-by-dispatch deviation inventory is published in the standards.
  • Assorted infrastructure repairs: the release-nudge seed ref, docs-environment dependency warnings, world-age-guarded docs_config.jl reads, and the ExplicitImports floor.

Internal

  • Every .jl template is asserted to reach the Runic sweep, so a template gated on an unswept flag combination cannot go unchecked silently, and a failure names the template rather than a temp path.

Merged pull requests:

  • feat(scaffold): ship the org coding standards as a managed CLAUDE.md block (#370) (@seabbs-bot)
  • ci(deps): bump the github-actions group with 10 updates (#383) (@dependabot[bot])
  • ci: migrate the managed standard from JuliaFormatter to Runic (#387) (@seabbs-bot)
  • feat: add run_selected, a filtered AD scenario/backend runner (#389) (@seabbs-bot)
  • feat: add ReverseDiff (compiled) to the managed AD backends (#390) (@seabbs-bot)
  • ci(deps): bump the github-actions group with 9 updates (#392) (@dependabot[bot])
  • feat: add run_selected, a filtered AD scenario/backend runner (#394) (@seabbs-bot)
  • feat: docs/pages.jl becomes a managed base with extension points (#397) (@seabbs-bot)
  • fix: raise the ExplicitImports floor to 1.6 (#401) (@seabbs-bot)
  • fix: strip trailing whitespace from test/scaffold.jl (#402) (@seabbs-bot)
  • docs(standards): publish dispatch deviation inventory; fix(taskfile): thread docs builds (#403) (@seabbs-bot)
  • fix: stop the README prose checks misreading markup and abbreviations (#404) (@seabbs-bot)
  • fix: repin the release-nudge seed ref to a commit that resolves (#405) (@seabbs-bot)
  • docs(agents): link the ecosystem design docs from AGENTS.md (#406) (@seabbs-bot)
  • style: repair two comment openings in the README-check tests (#407) (@seabbs-bot)
  • feat(docs): let a tutorial build against its own environment (#408) (@seabbs-bot)
  • fix: assert the design link in the AGENTS.md test (#409) (@seabbs-bot)
  • feat: warn when the docs env is missing a dep the AD pages load (#411) (@seabbs-bot)
  • fix: emit a trailing comma after the last Extensions nav entry (#417) (@seabbs-bot)
  • fix: trim the managed agent-file boilerplate to one line (#418) (@seabbs-bot)
  • fix: warn and fail when a managed AD backend has no test item (#419) (@seabbs-bot)
  • feat: report package-owned docs that describe a retired standard (#421) (@seabbs-bot)
  • feat: depend on the registered kit and drop the Julia 1.11 floor (#422) (@seabbs-bot)
  • feat: retire the AD-backends tutorial into the AD-comparison page (#423) (@seabbs-bot)
  • test: assert every .jl template reaches the Runic sweep (#424) (@seabbs-bot)
  • fix: name the Enzyme extension in its codecov flags, not all of ext/ (#426) (@seabbs-bot)
  • feat(scaffold): freshen reusable-workflow refs forwards on update (#425) (#427) (@seabbs-bot)
  • feat(docs): opt-in parallel execution of heavy tutorials (#432) (@seabbs-bot)
  • feat: support Julia 1.10 in the kit and test the fleet on lts (#435) (@seabbs-bot)

Closed issues:

  • build_docs README-derived index conflicts with a hand-authored docs tree (docs-migration smoothing) (#170)
  • AlgebraOfGraphics (docs ad-backends tutorial) conflicts with FlexiChains as a hard dep (#283)
  • Decide and document one NEWS.md convention across the org (#286)
  • Decouple org into package identity, reusable-workflow host, and docs domain (support non-EpiAware-org adopters) (#287)
  • Proposal: standardise a package overview-page design (Why bullets, popping example, Related packages section) (#292)
  • Document the extension-by-dispatch litmus test and keep one shared tooling implementation (#311)
  • Review ecosystem best practices and following SciMl statements (#318)
  • Release (#320)
  • AD-backends tutorial imports Chairmarks but the kit cannot add it to the package-owned docs/Project.toml (#324)
  • Ecosystem news style (#329)
  • Package docs and comments very verbose (#331)
  • Re-pin release-nudge.yml seed ref once EpiAware/.github#38 merges (#333)
  • Record scope ruling: 11 packages; JuliaForIDM and ComposableProbabilisticIDModels are out of scope (#340)
  • Placeholder-carrying templates are not blue-clean once substituted, so managed files churn on every sync (#344)
  • Four repos need a Related packages README section for #292's new requirement (#345)
  • _sentences splits at unlisted abbreviations, so test_readme_bullets false-positives (#347)
  • test_readme_prose reads indented code blocks and reference link labels as prose (#348)
  • New features should causing failing tests in other packages to get them to update (#349)
  • update() silently reverts a package's TagBot lookback override (#356)
  • TagBot has never run automatically: the actor gate never fires (#357)
  • Taskfile coverage task never instruments: Pkg.test lacks coverage=true (#360)
  • Managed test/jet/Project.toml still git-pins the kit, now that the kit is registered (#361)
  • templates: release-nudge.yaml pins a .github SHA that predates the reusable workflow (#362)
  • Formatter check and JET analysis skip ext/ (#363)
  • Register.yml can never post the JuliaRegistrator comment: --field treats a leading @ as a filename (#365)
  • Ship org-wide coding standards for agents as a managed CLAUDE.md block (#369)
  • Let a tutorial page build against its own environment, so version-conflicted extensions get a normal Documenter page (#371)
  • _RELEASE_NUDGE_SEED_REF pins release-nudge.yaml to a ref where release-nudge.yml does not exist (#377)
  • Docs linkcheck: transient 429 on the org CODE_OF_CONDUCT link aborts builds (#378)
  • Scaffolded docs/docs-fast Taskfile tasks don't set a thread count, so local docs builds sample MCMC chains serially (#380)
  • AD harness: add selective (per-name) scenario/backend running as a first-class feature (#384)
  • Add ReverseDiff (compiled) to _AD_BACKENDS so packages can adopt it without hand-editing managed files (#386)
  • scaffold: gitignored per-env Manifest.toml goes stale after a compat/[sources] change (#393)
  • Install the JuliaTagBot GitHub App on the EpiAware org (#395)
  • Install the JuliaTagBot GitHub App on the EpiAware org (#398)
  • Is the Julia 1.11 floor still needed, or is it an artefact of the kit being unregistered? (#410)
  • template-sync.yaml template describes a self-drift check adopters do not have (#412)
  • Generated pages.jl Extensions group is not Runic-clean (missing trailing comma) (#413)
  • Adding a backend to _AD_BACKENDS silently ships an empty CI job to adopters (#415)
  • codecov.yml Enzyme flags claim all of ext/, deflating their coverage (#416)
  • Managed .jl templates are not Runic-checked, so a mis-formatted template reds every adopter (#420)
  • update never advances a reusable-workflow pin, so a lagging adopter stays behind (#425)
  • Optionally run heavy Literate tutorials in parallel subprocesses (#428)
  • test_aqua stale_deps errors on Windows: Aqua is not installed in the isolated env (#433)