Release notes
Every release of the kit is published as a GitHub release. The most recent are reproduced below, as they were written there. See Release notes convention for what goes in one.
v0.4.1
Released 2026-08-14. Read it on GitHub.
This release folds in everything merged since v0.3.0: the managed formatter moved from JuliaFormatter to Runic, the kit itself gained Julia 1.10 support, and the AD harness picked up a filtered run_selected scenario/backend runner and a compiled ReverseDiff backend. Docs and standards also moved: a published inventory of dispatch-rule deviations, a new standards rule on duck-typed interfaces, a managed org coding-standards block for CLAUDE.md, and several accuracy and prose fixes across the getting-started pages. An adopting package picks all of this up on its next scheduled sync (update); nothing here needs a manual step beyond that.
Merged pull requests:
- chore: patch release compliance pass and version bump (#441) (@seabbs-bot)
Closed issues:
Release 0.4.0 (#431)
Sweep issue/PR numbers out of internal comments (standards rule 8) (#439)
Release v0.4.1 (#440)
v0.4.0
Released 2026-08-13. Read it on GitHub.
This is a breaking release.
Release notes (draft)
Breaking
The formatter is Runic, not JuliaFormatter.
.JuliaFormatter.tomlis a retired path, so a sync deletes it. The isolatedtest/formatterenvironment pins Runic exactly, kept in step with the.pre-commit-config.yamlhook revision.docs/pages.jlis now a managed base with extension points, regenerated on every sync. A package adds nav throughPACKAGE_TUTORIALS,PACKAGE_SECTIONS,DEVELOPMENT_EXTEND_PAGEandGETTING_STARTED_FAQin the package-owneddocs/docs_config.jl. A bespokepages.jlwithout 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-backendsanchor so existing@reflinks 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.mdplus aCLAUDE.mdpointer, 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.
updatenow 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.updatereports 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.jlreads, and the ExplicitImports floor.
Internal
- Every
.jltemplate 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
orginto 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)
v0.3.0
Released 2026-08-06. Read it on GitHub.
Breaking release.
Changes how actions are managed
Changes were and how benchmarks are stored.
Merged pull requests:
feat: split the AD benchmark report out of the ad-backends template (#299) (#305) (@seabbs-bot)
chore(deps): update JET requirement from 0.10.2, 0.11 to 0.10.2, 0.11, 0.12 in the julia group across 1 directory (#337) (@dependabot[bot])
feat: watch the isolated test environments with Dependabot, bump JET to 0.12 (#351) (@seabbs-bot)
fix: build versioned docs for every release (#353) (@seabbs-bot)
feat: report a failing template-sync as one tracking issue (#352) (#355) (@seabbs-bot)
ci(deps): bump the github-actions group across 1 directory with 10 updates (#358) (@dependabot[bot])
fix: ignore benchmark trend chart in managed .gitignore (#359) (@seabbs-bot)
fix: sync kit's own .gitignore with the overall_trend.png template entry (#366) (@seabbs-bot)
feat(docs): source the release-notes page from GitHub Releases (#368) (@seabbs-bot)
docs(comments): trim oversized comment blocks in src and templates (#374) (@seabbs-bot)
ci(deps): bump the github-actions group across 1 directory with 10 updates (#375) (@dependabot[bot])
Closed issues:
test_formatting resolves JuliaFormatter from the shared test env, so an unpinned repo goes red on a formatter release (#339)
Template sync: open an issue when a sync cannot land without manual intervention (#352)
Source the release-notes docs page from GitHub Releases, not NEWS.md (#367)
Trim oversized comment blocks in src/ and templates/ (#373)
v0.2.0
Released 2026-08-03. Read it on GitHub.
Breaking release. Added non-opt in README checks for enforcing org standard readmes.
Merged pull requests:
feat: add generic benchmark-reporting harness as Benchmarks submodule (#1) (@seabbs-bot)
ci(deps): bump EpiAware/.github/.github/workflows/format-check.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 0b92629d0e7663ba8708af5b4d2f8e03d05fea2c (#2) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/tests.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 0b92629d0e7663ba8708af5b4d2f8e03d05fea2c (#3) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/docs-preview-cleanup.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 0b92629d0e7663ba8708af5b4d2f8e03d05fea2c (#5) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/downgrade.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 0b92629d0e7663ba8708af5b4d2f8e03d05fea2c (#6) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/tagbot.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 0b92629d0e7663ba8708af5b4d2f8e03d05fea2c (#7) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/coverage.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 0b92629d0e7663ba8708af5b4d2f8e03d05fea2c (#8) (@dependabot[bot])
feat: QA helpers, dev-config templates, and scaffold (#9) (@seabbs-bot)
rename package EpiAwareTestUtils -> EpiAwarePackageTools (#10) (@seabbs-bot)
Harden AD registry, formatter isolation, and @template docstrings for CD-main adoption (#11) (@seabbs-bot)
fix(qa): formatter env isolation + @template docstring reading (#12) (@seabbs-bot)
feat: AD opt-in, self-dogfooding, managed README badges, and CI fixes (#13) (@seabbs-bot)
feat: standard README section-structure check + docs index injection (#15) (@seabbs-bot)
ci(deps): bump julia-actions/setup-julia from 2 to 3 (#24) (@dependabot[bot])
ci(deps): bump julia-actions/cache from 2 to 3 (#28) (@dependabot[bot])
feat: DocumenterVitepress docs build + scaffold/helper fixes (closes #16-#20, #31-#34) (#35) (@seabbs-bot)
ci(deps): bump EpiAware/.github/.github/workflows/tagbot.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#39) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/downgrade.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#40) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/format-check.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#41) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/documentation.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#42) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/docs-preview-cleanup.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#43) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/coverage.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#44) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/tests.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#45) (@dependabot[bot])
feat: DocumenterVitepress docs + ref-preserving sync, scheduled template-sync, org templates, docstrings (#47) (@seabbs-bot)
feat: dogfood the docstrings @template into the kit's own module (#48) (@seabbs-bot)
fix(docs): default to project-pages base (no DNS) + subdomain opt-in (#53) (@seabbs-bot)
fix(docs): deploy the kit's own docs to its DNS-wired subdomain (#54) (@seabbs-bot)
feat: full CensoredDistributions.jl parity (docs build, README badges, benchmark + version CI, Taskfile, [workspace], test compat) (#55) (@seabbs-bot)
fix: managed .gitignore ignores generated docs pages + ad=true codecov status gate (#56) (#61) (@seabbs-bot)
chore: auto-increment version to 0.1.1 (#62) (@github-actions[bot])
chore!: stop scaffolding org community health files (use EpiAware/.github) (#63) (@seabbs-bot)
style(docs): hide the default VitePress nav social links in the managed theme (#64) (@seabbs-bot)
feat(docs): extract docs build into a tested DocsBuild module + render benchmark history + keep content tables (#68) (@seabbs-bot)
fix: aggregate AD status badge + restore benchmark trigger paths (#71) (@seabbs-bot)
fix: .gitignore managed-block so package additions survive update (#74) (@seabbs-bot)
fix: persist reviewer handle across update()/template-sync (closes #72) (#76) (@seabbs-bot)
fix: invokelatest the Literate.DocumenterFlavor constructor (world-age) (#79) (@seabbs-bot)
fix: green the dogfooded JET check — type-stable docs-subdomain + docs-build root (closes #77) (#81) (@seabbs-bot)
test: instantiate generated scaffold environments (#83) (@seabbs-bot)
feat!: make benchmarks opt-in (gated flag + idempotent detection) (#85) (@seabbs-bot)
feat(docs): CD-parity docs/README — getting-started page, CI-sync docs, citation, stars widget (#80) (#88) (@seabbs-bot)
docs: drop dogfood jargon, add page-customise guidance, lighten kit README (#90) (@seabbs-bot)
fix: separate Customising page, CD-style README bullets, fix broken docs links (#92) (@seabbs-bot)
fix: README /dev docs links, registered install form, JuliaFormatter pin (#93) (@seabbs-bot)
feat: register-readiness scaffold cluster (Register.yml, checklist, NEWS, logo) (#94) (@seabbs-bot)
test: raise quality/qa/docs_build coverage, focused on the quality module (#95) (@seabbs-bot)
fix: preserve package-owned with: inputs on managed CI callers (#73) (#96) (@seabbs-bot)
fix: fail loudly on a silently truncated docs home page (#91) (#98) (@seabbs-bot)
refactor: DRY the lazy Base.require loader + isolated-env runner (#58) (#99) (@seabbs-bot)
style: lowercase structural ALL-CAPS emphasis in src/test (#57) (#100) (@seabbs-bot)
fix: invokelatest Pkg.activate/instantiate in _run_isolated_env (#58) (#101) (@seabbs-bot)
feat: skip the AD sweep on docs-only changes (ad.yaml paths-ignore) (#102) (@seabbs-bot)
feat: port CD's two-job benchmark.yaml architecture (gap 1, #821) (#104) (@seabbs-bot)
fix: render light tutorials under skip_notebooks, stub only heavy ones (#106) (@seabbs-bot)
feat: centralise using/import in the module file (#105) (#107) (@seabbs-bot)
feat!: make _AD_BACKENDS the single source of truth for AD infra (#108) (@seabbs-bot)
feat: force-stub specific heavy tutorials independent of skip_notebooks (#111) (@seabbs-bot)
fix: compare job resolves the kit from git, not benchmark/Project.toml (#113) (@seabbs-bot)
ci: bump pinned actions + add pre-commit concurrency block (#116) (@seabbs-bot)
feat: adopt compact icon-only mobile fallback in StarUs.vue (#119) (@seabbs-bot)
fix: compare job's scratch env also installs BenchmarkTools (#120) (@seabbs-bot)
fix: single-source JuliaFormatter version so CI matches the pinned hook (#114) (#127) (@seabbs-bot)
fix: regenerate .secrets.baseline with detect-secrets 1.5.0 (#118) (#137) (@seabbs-bot)
fix: omit increment-version assignee when no reviewer, never the bare org (#122) (#146) (@seabbs-bot)
fix: auto-detect docs_subdomain on update so hosting is not reverted (#123) (#147) (@seabbs-bot)
fix: preserve a caller with: block documented by comments across update() (#117) (#148) (@seabbs-bot)
fix: read submodule docstrings from their own meta in test_docstring_format (#124) (#149) (@seabbs-bot)
fix: seed the docs env with the kit so the docs build resolves (#115 part 3) (#150) (@seabbs-bot)
fix: benchmark-history supports unregistered packages + pre-first-tag bootstrap (#125) (#151) (@seabbs-bot)
feat: package-level downgrade-compat opt-out that survives template sync (#121) (#152) (@seabbs-bot)
fix: strip seed's leading HTML comment from rendered Benchmarks page (#145) (#155) (@seabbs-bot)
fix: seed infrastructure page in its own Development nav section (#136) (#156) (@seabbs-bot)
fix: drop unwired benchmark/comment (asv_comment) env from scaffold (#126) (#157) (@seabbs-bot)
fix: harden version-on-demand against comment-body shell injection (#158) (#159) (@seabbs-bot)
fix: preserve adopter DOI badge across update()/template-sync (#161) (#164) (@seabbs-bot)
fix: package-owned opt-out for the force-managed AD driver (#162) (#165) (@seabbs-bot)
fix: benchmark-history parked triggers survive template-sync (#153) (#166) (@seabbs-bot)
feat: configurable docs-build timeout on document.yaml (#154) (#167) (@seabbs-bot)
fix: API-page generator includes re-exported + public-only bindings (#160) (#168) (@seabbs-bot)
fix: managed docs/quality tolerate unseeded package-owned config (#163) (#169) (@seabbs-bot)
fix: guard the #160 public-binding test fixture for lts (Julia 1.10) (#171) (@seabbs-bot)
fix: gate the #160 rendered dep_public assertion for lts (#172) (@seabbs-bot)
docs: kit's own logo (dogfood) + test/benchmark/AD infrastructure reference pages (#174) (@seabbs-bot)
feat: manage README standard sections (Contributing/CoC/How-to-cite) + CITATION.cff (#67) (#176) (@seabbs-bot)
fix: link CITATION.cff via GitHub URL so docs linkcheck passes (#177) (@seabbs-bot)
refactor!: rename exported
update/generatetoscaffold_update/scaffold_generate(#178) (@seabbs-bot)fix: pass re-exported bindings' owning modules to makedocs (#175) (#179) (@seabbs-bot)
chore: auto-increment version to 0.1.1 (#182) (@github-actions[bot])
feat: nicer branded kit logo (package-cube mark) (#184) (@seabbs-bot)
feat: kit-shipped AD backends tutorial page driven by the ADRegistry (CD model) (#195) (@seabbs-bot)
fix(docs): embed + readable benchmark history (#192, #193) (#196) (@seabbs-bot)
fix: managed-file lifecycle — retire dead files, keep them writable, merge with: keys, bump the seed ref (#197) (@seabbs-bot)
fix: ext coverage under the unit flag only + loud guarded-config fallbacks (#180, #188) (#198) (@seabbs-bot)
fix(docs): pass source remotes for re-exported owning modules (#190) (#199) (@seabbs-bot)
fix: stop seeding kit meta-docs into package doc sites + dedupe the install section (#200) (@seabbs-bot)
feat(docs): overall benchmark summary table + combined trend plot (#203) (@seabbs-bot)
fix(quality): accept the managed '## How to cite' heading in the README-sections check (#210) (@seabbs-bot)
fix(docs): harden benchmark embed against empty-anchor DocumenterVitepress deploy aborts (#211) (@seabbs-bot)
docs: cross-reference EpiAwareADTools from the kit's AD docs (#213) (@seabbs-bot)
fix: attach a with:-block comment to the key it precedes, not the key before it (#212) (#218) (@seabbs-bot)
docs: warn that @testsnippet discovery isn't path-scoped by test/runtests.jl (#191) (#219) (@seabbs-bot)
fix: make the main/AD test-env templates is_kit-aware, like the JET env (#60) (#220) (@seabbs-bot)
fix(test): stop nested-worktree files shadowing testsnippets in managed runtests (#191) (#221) (@seabbs-bot)
fix(scaffold): preserve third-party action pins across scaffold_update (#222) (@seabbs-bot)
fix(quality): make test_explicit_imports extension-load-order independent (#223) (@seabbs-bot)
fix: fresh ad=true scaffold passes its own QA/AD out of the box + warn before clobbering a diverged unmarked ad setup.jl (#225) (@seabbs-bot)
fix(docs): parse stacked benchmark history tables, never emit an empty anchor (#204) (#227) (@seabbs-bot)
feat(scaffold): generic EPIAWARE_MANAGED_OVERRIDE marker for managed files (#224) (#228) (@seabbs-bot)
feat(benchmarks): resolve unregistered [sources] deps via a scratch registry (#216) (#229) (@seabbs-bot)
fix(ci): template sync never pushes to a branch it did not open (#215) (#230) (@seabbs-bot)
fix(docs): keep benchmark timing and allocation rows separate (#231) (#233) (@seabbs-bot)
fix(docs): guard the vitepress inventory against empty anchor ids (#232) (#238) (@seabbs-bot)
fix(quality): README section order as a subsequence + managed-block order check (#236) (#239) (@seabbs-bot)
feat(scaffold): preserve the downstreams list, the licence badge, and a bespoke docs/make.jl (#234, #235, #237) (#240) (@seabbs-bot)
feat: add managed registrability CI caller (#243) (@seabbs-bot)
feat(scaffold): opt-in EpiAware org branding in the README and docs footer (#242) (#245) (@seabbs-bot)
feat(scaffold): adopt a Julia 1.11 floor in the managed standard (#246) (#250) (@seabbs-bot)
fix(docs): raise the anchor-guard bound to DocumenterVitepress 0.3.5 (#232) (#252) (@seabbs-bot)
fix(scaffold): ignore the nested worktrees/ layout, not only worktree-* (#247) (#254) (@seabbs-bot)
chore: release 0.3.0 (signals the breaking Julia-floor bump from #250) (#257) (@seabbs-bot)
fix(ci): merge-conflict check runs every commit + catches the diff3 base marker (#251) (#258) (@seabbs-bot)
fix(ci): template-sync no-ops on a PR instead of erroring under Dependabot (#256) (#259) (@seabbs-bot)
fix(ci): auto-version-increment strips a -DEV suffix instead of bumping past it (#255) (#260) (@seabbs-bot)
fix(scaffold): reconcile docs deploy_url against the gh-pages CNAME (#262) (@seabbs-bot)
fix(scaffold): https:// scheme in docs deploy_url (ecosystem CSS 404 root fix) (#264) (@seabbs-bot)
ci(deps): bump EpiAware/.github/.github/workflows/coverage.yml from 6d4e35e2515f947acbf7d2a683cbf02b341005c7 to 6fcdcde033ec670ac3832b239427fd2ded591bbc (#265) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/tagbot.yml from 6d4e35e2515f947acbf7d2a683cbf02b341005c7 to 6fcdcde033ec670ac3832b239427fd2ded591bbc (#266) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/tests.yml from 6d4e35e2515f947acbf7d2a683cbf02b341005c7 to 6fcdcde033ec670ac3832b239427fd2ded591bbc (#267) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/cancel-on-close.yml from 6d4e35e2515f947acbf7d2a683cbf02b341005c7 to 6fcdcde033ec670ac3832b239427fd2ded591bbc (#268) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/docs-preview-cleanup.yml from 6d4e35e2515f947acbf7d2a683cbf02b341005c7 to 6fcdcde033ec670ac3832b239427fd2ded591bbc (#269) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/format-check.yml from 6d4e35e2515f947acbf7d2a683cbf02b341005c7 to 6fcdcde033ec670ac3832b239427fd2ded591bbc (#270) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/documentation.yml from 6d4e35e2515f947acbf7d2a683cbf02b341005c7 to 6fcdcde033ec670ac3832b239427fd2ded591bbc (#271) (@dependabot[bot])
chore(deps): update Statistics requirement to 1.11.1 (#272) (@dependabot[bot])
chore(deps): update DifferentiationInterfaceTest requirement from 0.9, 0.10 to 0.9, 0.10, 0.11 (#273) (@dependabot[bot])
chore(deps): update JET requirement from 0.10.2 to 0.10.2, 0.11 (#274) (@dependabot[bot])
fix(compat): correct the last false lower bounds + re-enable the downgrade job (#253) (#276) (@seabbs-bot)
fix(docs): stargazers widget degrades on any transient GitHub error (#277) (#278) (@seabbs-bot)
ci: bump actions/checkout to v7 and julia-actions/cache to v3 (#275) (#280) (@seabbs-bot)
feat(scaffold): warn on stdlib deps used in tests but undeclared (#263) (#281) (@seabbs-bot)
fix(docs): benchmarks page reads clean on a single-revision package (#282) (#284) (@seabbs-bot)
ci: group Dependabot bumps into one PR per ecosystem (#249) (#285) (@seabbs-bot)
docs: document one NEWS.md convention, drop the hybrid-changelog framing (#288) (@seabbs-bot)
docs: correct STANDARD_README_SECTIONS order provenance (#289) (#291) (@seabbs-bot)
ci: let template-sync push workflow-file drift via an App token (#293) (@sbfnk-bot)
refactor!: rename scaffold_update to update, public-not-exported (#294) (#295) (@seabbs-bot)
fix: seed Chairmarks in the ad=true docs env for DIT 0.11 (#296) (@seabbs-bot)
fix: strip HTML comments from the generated docs index (#297) (#300) (@seabbs-bot)
fix: re-sync the kit's own managed files after #295/#293 (#302) (@seabbs-bot)
fix: signature-qualified @docs entries for extended generics (#290) (#303) (@seabbs-bot)
fix: make build_index's HTML-comment strip fenced-code-block-aware (#301) (#304) (@seabbs-bot)
feat: document and enforce eager validation of named options (#310) (#314) (@seabbs-bot)
ci(deps): bump the github-actions group with 9 updates (#316) (@dependabot[bot])
chore(deps): update JuliaFormatter requirement from =2.10.1 to =2.10.1, 2.11 in the julia group (#317) (@dependabot[bot])
fix: close five seabbs-bot defect reports (#306, #313, #315, #321, #322) (#323) (@seabbs-bot)
feat: run dependabot daily on both ecosystems (#312) (#326) (@seabbs-bot)
feat: give packages with extensions a docs nav group (#319) (#327) (@seabbs-bot)
ci(deps): bump the github-actions group with 8 updates (#330) (@dependabot[bot])
feat: scaffold a release-nudge caller workflow (#332) (@seabbs-bot)
fix: re-pin registrability seed ref to squash-merge SHA (#248) (#334) (@seabbs-bot)
fix: warn when a resync is about to drop a local-caller override (#325) (#338) (@seabbs-bot)
docs: add the package standards page (#331) (#342) (@seabbs-bot)
feat(quality): encode #292's README standard, plus three opt-in wording checks (#346) (@seabbs-bot)
Closed issues:
scaffold hardcodes MIT LICENSE as a managed file: add a license input + make LICENSE package-owned (sync reverts deliberate licences) (#14)
JET runner cannot analyse a DynamicPPL @model package cleanly (false positives on ~-assigned locals) (#16)
test_explicit_imports: check_no_implicit_imports is un-ignorable and breaks @reexport (#17)
test_doctest + @meta CurrentModule fails under TestItemRunner isolation (#18)
scaffolded test envs depend on EpiAwarePackageTools with no [sources] entry → can't resolve when unregistered (#19)
scaffold writes benchmark/ scripts but no benchmark/Project.toml —
--project=benchmarkhas no env (#20)scaffold ships no .gitignore → Manifest.toml committed, breaks lts CI + trips detect-secrets (#31)
scaffolded dependabot.yml sets reviewers/assignees to a bare org → GitHub can't assign (#32)
scaffold sets up plain Documenter, not DocumenterVitepress (the org docs standard) (#33)
coverage caller uses fail_ci_if_error: true → CI red out-of-the-box without CODECOV_TOKEN on a protected branch (#34)
scaffold ships no .github/CODEOWNERS or ISSUE_TEMPLATE/ (org standard has both) (#36)
scaffold-generated root Project.toml has no [workspace] stanza (#37)
scaffold-generated test/Project.toml has no [compat] block (#38)
scaffold ships no README template (org-standard badge table + capabilities section) (#46)
offer AD testing (per-backend workflows + README AD badges) as a scaffold option (opt-in/opt-out) (#49)
scaffold ships a managed benchmark harness (benchmark/run.jl + benchmarks.jl + Project.toml) but no CI workflow to run it (#50)
scaffolded docs workflow cancels the main deploy (cancel-in-progress) + lacks gh-pages deploy serialisation (#51)
CD-adoption readiness: kit gaps not covered by #37/#38/#46/#49/#50 (#52)
Managed .gitignore + codecov (ad=true) drop two settings CD needs (#56)
Style: lowercase structural ALL-CAPS emphasis in src + tests (match CD #513) (#57)
DRY: unify the lazy Base.require loader and the isolated-env subprocess runner (#58)
Scaffold/generate tests never instantiate or run the generated environments (#59)
Reproducibility: adopting envs pin the kit to a moving rev="main"; main test env not is_kit-aware (#60)
Managed .gitignore overwrites package-owned keep-rules on update (#65)
Manage standard README body sections (Contributing / Code of conduct) with package-owned content hooks (#67)
scaffold: set DocumenterVitepress deploy_url for the org custom-domain convention (docs CSS 404s otherwise) (#69)
update()/template-sync reverts code-owner handle to generic placeholder (CODEOWNERS + dependabot reviewers) (#72)
update() strips package-owned 'with:' inputs on managed CI callers (reverts a deliberate Julia floor/matrix) (#73)
JET: _resolve_docs_subdomain / DocsBuild type instability (4 findings) (#77)
Docs/README CD-parity gaps: getting-started split, CI-setup docs, citation, GitHub stars, self-as-example (#80)
Coverage CI red: codecov rejects upload — CODECOV_TOKEN secret needed (Token required, not valid tokenless upload) (#82)
Benchmarks should be opt-in: scaffold emits an empty Benchmarks docs page for packages with no suite (#84)
JuliaFormatter version skew: in-process quality check (v2.10.1) vs isolated test/formatter env (v2.5.5) (#89)
Local docs build silently truncates index.md and masks dead links under some node_modules/instantiate orderings (#91)
Investigate root cause of #91 docs-build node_modules/instantiate ordering race (#97)
Centralise
usingin the main module: hoist DocStringExtensions import out of docstrings.jl (#105)StarUs.vue: adopt CD's compact icon-only mobile fallback (<560px) (#109)
pre-commit.yaml template is missing a concurrency: block (#110)
Bump pinned actions in scaffold templates: setup-julia v2→v3, create-pull-request v7→v8 (#112)
Formatter version skew: templates pin JuliaFormatter 2.10.1 but shared format-check.yml installs 2.5.5 (#114)
Scaffolded CI cannot pass while the kit is unregistered (lts/downgrade [sources] resolution; docs env missing the kit) (#115)
update(): with: preservation (#73) misses blocks when comments sit between uses: and with: (#117)
Shipped .secrets.baseline template is stale (detect-secrets 1.4.0); update() downgrades adopters (#118)
Managed test.yaml template needs a package-level opt-out for downgrade-compat (and to preserve with: input overrides) on template sync (#121)
Omitted reviewer leaks the bare org into the increment-version assignee default, breaking PR updates (#122)
update() silently reverts docs_subdomain, breaking custom-domain docs CSS (#123)
test_docstring_format cannot see submodule docstrings (public TestUtils gets a permanent @test_skip) (#124)
benchmark-history template: support unregistered packages (–url) and the pre-first-tag bootstrap (#125)
Scaffolded benchmark/comment/ (asv_comment) env is not wired to any workflow (#126)
Scaffold seeds the infrastructure/template-sync page under Getting started (#136)
build_benchmark_page splices the seeded HTML comment onto the rendered Benchmarks page (#145)
benchmark-history.yaml: parked push/tag triggers (unregistered [sources] dep) don't survive template-sync (#153)
Scaffolded document.yaml should allow setting the docs-build timeout_minutes (#154)
version-on-demand: comment body shell-injected into run: (functional failure on special chars + security) (#158)
DocsBuild API-page generator misses re-exported and public-only bindings (broken @refs in built docs) (#160)
update() strips adopter DOI badge — add _detect_doi to preserve it across update()/template-sync (#161)
test/ad/setup.jl force-managed clobbers package-owned AD driver on unmigrated ADFixtures (MethodError on category=) (#162)
update() rewrites managed make.jl/quality.jl to depend on package-owned config it never seeds for existing adopters (#163)
Docs kit's exported
updatecollides with package-levelupdateexports in Main during docs builds (#173)build_docs must pass owning modules of re-exported bindings to makedocs' modules kwarg (#175)
Managed codecov.yml lists ext/ under ad-* flags, causing 0% extension coverage false-positives (#180)
Registrator (#181)
scaffold_update silently drops package overrides co-located in a job's already-non-empty with: block (#183)
scaffold_update never deletes retired managed files (benchmark/comment/ survives #157) (#185)
Kit seed ref lags EpiAware/.github head (dc919e0d vs 6fcdcde0) (#186)
scaffold_update writes managed files read-only when the kit is Pkg.add'ed (#187)
Guarded docs/QA config fallbacks are silent — warn when pages.jl/docs_config.jl or the readme config are missing (#188)
test_explicit_imports verdict depends on extension-load order (non-deterministic QA) (#189)
build_docs must pass for re-exported owning modules (follow-up to #179): MissingRemoteError breaks downstream docs builds (#190)
Managed runtests.jl filters testitems from nested worktrees but not @testsnippet name collisions (#191)
Benchmark history not embedded on docs page: managed docs build can't resolve the benchmarks branch (#192)
Benchmark history docs page is unreadable at realistic suite sizes (flat 200+-row table, hash columns, PNG wall) (#193)
Stop seeding kit meta-docs (customising/infrastructure/julia) into package doc sites; dedupe the install section (#194)
Managed README standard-sections block fails the kit's own README-section quality check (#201)
Benchmark docs: overall summary table + combined trend plot (on top of #192/#193) (#202)
Benchmark history embed can produce an anchored header with an empty anchor id (aborts DocumenterVitepress deploy builds) (#204)
build_docs: DocInventories empty-name AnchoredHeader ArgumentError crashes docs render on fresh doc-tooling resolution (#207)
scaffold() (managed_only=false) regenerates deliberately-removed package-owned meta-docs on an already-adopted repo (#208)
scaffold_update: with: key preservation (kit#197) drops or duplicates adjacent comments (#212)
Managed template-sync push on dependabot/PR branches silently reverts intentional package customisations (#214)
template-sync silently reverts package-owned overrides when it re-applies on non-sync branches (e.g. Dependabot PRs) (#215)
Benchmark infra cannot resolve unregistered [sources] deps (benchpkg temp env ignores a dependency's sources) (#216)
generate()/scaffold() seeds a fresh package's AD harness inconsistently across backends (#217)
Generalise the diverged-unmarked-managed-file warning beyond test/ad/setup.jl (#224)
scaffold: LoweredDistributions.jl was missing getting-started/customising.md + emits a docs-site-breaking CITATION.cff link (#226)
Benchmark history: timing and allocation rows are merged into one suite (duplicate labels + mixed-unit summary ratios) (#231)
DocsBuild: guard the vitepress inventory against empty anchor ids (generalise the per-repo warn-and-skip overrides) (#232)
scaffold_update resets the package-owned downstreams list in downstream.yaml (#234)
scaffold_update strips adopter LICENSE badge — add _detect_license to preserve it across scaffold_update()/template-sync (sibling of #161) (#235)
test_readme_sections order check fails when an adopter has a ## License section above the appended standard-sections block (follow-up to #201) (#236)
scaffold_update force-migrates docs/make.jl to build_docs, reversing a package's documented bespoke-make.jl opt-out with no marker to preserve it (#237)
docs: blank-named benchmark row emits an empty
###heading (empty anchor) and aborts the whole docs build (#241)Opt-in EpiAware org branding in the managed docs footer (logo + org links) (#242)
Scaffolded packages break on Julia LTS (1.10): [sources] is ignored, so the registered kit v0.1.0 resolves without run_package_tests (#246)
Managed .gitignore ignores 'worktree-*' but not the 'worktrees/<name>' layout adopters actually use (#247)
Registrability caller pins a live PR-branch SHA of EpiAware/.github (GC risk after squash) (#248)
Review the CI-update model: template-sync can't push workflows + Dependabot fights kit-managed workflow files (#249)
pre-commit check-merge-conflict is inert outside a merge, so a stray conflict marker can reach main (#251)
Declared compat lower bounds were never validated on a supported Julia (downgrade ran on 1.10) (#253)
auto-version-increment misreads a pre-release '-DEV' version as released and bumps the patch, skipping the maiden version (#255)
template-sync's Dependabot-triggered leg errors under Dependabot's restricted token, so every Dependabot PR shows a spurious red 'sync' (#256)
Scaffolded test env repeatedly misses stdlib deps used by tests (LinearAlgebra, Statistics) (#263)
Bump actions/checkout to v7 and julia-actions/cache to v3 in the managed workflow templates (#275)
Managed StarUs stargazers loader hard-fails the docs build on a transient GitHub API error (e.g. 503) (#277)
Propagate the deploy_url https:// scheme fix (#264) to already-scaffolded subdomain packages (#279)
docs: benchmarks page shows empty
## Performance historyheading + all-n/asummary on a single-revision package (#282)STANDARD_README_SECTIONS order disagrees with its own cited gold-standard repo (#289)
build_api_pages: bare @docs entries pull in unrelated upstream MultiDoc text for extended generics (#290)
Move to Public not exported update vs scaffold_update (#294)
build_docs README-to-index transform renders the managed-section HTML comments as visible text (#297)
Org convention: the README/home page opens with a taster example and links to the overview (#298)
Split the benchmark report out of the shared ad-backends tutorial template (#299)
build_index's HTML-comment strip is not fenced-code-block-aware (#301)
build_index's comment strip doesn't recognise indented code blocks or inline code spans (#306)
Document and auto-enforce eager validation of named options (#310)
Manage dependabot setup so we get daily updates but grouped across deps (#312)
build_docs: checkdocs=:all always flags the module's own docstring as "not included" (#313)
Managed Taskfile coverage task never instruments the actual test run (#315)
Docs: optional "Extensions" dropdown in the scaffolded docs nav (#319)
Managed quality.jl never uses the pinned test/formatter env, so
Quality: formattingfloats with the Julia version (#321)updatere-renders a README section linking to CITATION.cff but never seeds the file, so pre-CITATION adopters get a 404 in linkcheck (#322)Template sync silently reverts a caller repointed at a local reusable workflow (#325)
v0.1.0
Released 2026-08-03. Read it on GitHub.
Merged pull requests:
feat: add generic benchmark-reporting harness as Benchmarks submodule (#1) (@seabbs-bot)
ci(deps): bump EpiAware/.github/.github/workflows/format-check.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 0b92629d0e7663ba8708af5b4d2f8e03d05fea2c (#2) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/tests.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 0b92629d0e7663ba8708af5b4d2f8e03d05fea2c (#3) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/docs-preview-cleanup.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 0b92629d0e7663ba8708af5b4d2f8e03d05fea2c (#5) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/downgrade.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 0b92629d0e7663ba8708af5b4d2f8e03d05fea2c (#6) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/tagbot.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 0b92629d0e7663ba8708af5b4d2f8e03d05fea2c (#7) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/coverage.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 0b92629d0e7663ba8708af5b4d2f8e03d05fea2c (#8) (@dependabot[bot])
feat: QA helpers, dev-config templates, and scaffold (#9) (@seabbs-bot)
rename package EpiAwareTestUtils -> EpiAwarePackageTools (#10) (@seabbs-bot)
Harden AD registry, formatter isolation, and @template docstrings for CD-main adoption (#11) (@seabbs-bot)
fix(qa): formatter env isolation + @template docstring reading (#12) (@seabbs-bot)
feat: AD opt-in, self-dogfooding, managed README badges, and CI fixes (#13) (@seabbs-bot)
feat: standard README section-structure check + docs index injection (#15) (@seabbs-bot)
ci(deps): bump julia-actions/setup-julia from 2 to 3 (#24) (@dependabot[bot])
ci(deps): bump julia-actions/cache from 2 to 3 (#28) (@dependabot[bot])
feat: DocumenterVitepress docs build + scaffold/helper fixes (closes #16-#20, #31-#34) (#35) (@seabbs-bot)
ci(deps): bump EpiAware/.github/.github/workflows/tagbot.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#39) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/downgrade.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#40) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/format-check.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#41) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/documentation.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#42) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/docs-preview-cleanup.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#43) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/coverage.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#44) (@dependabot[bot])
ci(deps): bump EpiAware/.github/.github/workflows/tests.yml from dc919e0d1674c16d1518df07eda5ee0be09b47e2 to 6d4e35e2515f947acbf7d2a683cbf02b341005c7 (#45) (@dependabot[bot])
feat: DocumenterVitepress docs + ref-preserving sync, scheduled template-sync, org templates, docstrings (#47) (@seabbs-bot)
feat: dogfood the docstrings @template into the kit's own module (#48) (@seabbs-bot)
fix(docs): default to project-pages base (no DNS) + subdomain opt-in (#53) (@seabbs-bot)
fix(docs): deploy the kit's own docs to its DNS-wired subdomain (#54) (@seabbs-bot)
feat: full CensoredDistributions.jl parity (docs build, README badges, benchmark + version CI, Taskfile, [workspace], test compat) (#55) (@seabbs-bot)
fix: managed .gitignore ignores generated docs pages + ad=true codecov status gate (#56) (#61) (@seabbs-bot)
chore: auto-increment version to 0.1.1 (#62) (@github-actions[bot])
chore!: stop scaffolding org community health files (use EpiAware/.github) (#63) (@seabbs-bot)
style(docs): hide the default VitePress nav social links in the managed theme (#64) (@seabbs-bot)
feat(docs): extract docs build into a tested DocsBuild module + render benchmark history + keep content tables (#68) (@seabbs-bot)
fix: aggregate AD status badge + restore benchmark trigger paths (#71) (@seabbs-bot)
fix: .gitignore managed-block so package additions survive update (#74) (@seabbs-bot)
fix: persist reviewer handle across update()/template-sync (closes #72) (#76) (@seabbs-bot)
fix: invokelatest the Literate.DocumenterFlavor constructor (world-age) (#79) (@seabbs-bot)
fix: green the dogfooded JET check — type-stable docs-subdomain + docs-build root (closes #77) (#81) (@seabbs-bot)
test: instantiate generated scaffold environments (#83) (@seabbs-bot)
feat!: make benchmarks opt-in (gated flag + idempotent detection) (#85) (@seabbs-bot)
feat(docs): CD-parity docs/README — getting-started page, CI-sync docs, citation, stars widget (#80) (#88) (@seabbs-bot)
docs: drop dogfood jargon, add page-customise guidance, lighten kit README (#90) (@seabbs-bot)
fix: separate Customising page, CD-style README bullets, fix broken docs links (#92) (@seabbs-bot)
fix: README /dev docs links, registered install form, JuliaFormatter pin (#93) (@seabbs-bot)
feat: register-readiness scaffold cluster (Register.yml, checklist, NEWS, logo) (#94) (@seabbs-bot)
test: raise quality/qa/docs_build coverage, focused on the quality module (#95) (@seabbs-bot)
fix: preserve package-owned with: inputs on managed CI callers (#73) (#96) (@seabbs-bot)
fix: fail loudly on a silently truncated docs home page (#91) (#98) (@seabbs-bot)
refactor: DRY the lazy Base.require loader + isolated-env runner (#58) (#99) (@seabbs-bot)
style: lowercase structural ALL-CAPS emphasis in src/test (#57) (#100) (@seabbs-bot)
fix: invokelatest Pkg.activate/instantiate in _run_isolated_env (#58) (#101) (@seabbs-bot)
feat: skip the AD sweep on docs-only changes (ad.yaml paths-ignore) (#102) (@seabbs-bot)
feat: port CD's two-job benchmark.yaml architecture (gap 1, #821) (#104) (@seabbs-bot)
fix: render light tutorials under skip_notebooks, stub only heavy ones (#106) (@seabbs-bot)
feat: centralise using/import in the module file (#105) (#107) (@seabbs-bot)
feat!: make _AD_BACKENDS the single source of truth for AD infra (#108) (@seabbs-bot)
feat: force-stub specific heavy tutorials independent of skip_notebooks (#111) (@seabbs-bot)
fix: compare job resolves the kit from git, not benchmark/Project.toml (#113) (@seabbs-bot)
ci: bump pinned actions + add pre-commit concurrency block (#116) (@seabbs-bot)
feat: adopt compact icon-only mobile fallback in StarUs.vue (#119) (@seabbs-bot)
fix: compare job's scratch env also installs BenchmarkTools (#120) (@seabbs-bot)
fix: single-source JuliaFormatter version so CI matches the pinned hook (#114) (#127) (@seabbs-bot)
fix: regenerate .secrets.baseline with detect-secrets 1.5.0 (#118) (#137) (@seabbs-bot)
fix: omit increment-version assignee when no reviewer, never the bare org (#122) (#146) (@seabbs-bot)
fix: auto-detect docs_subdomain on update so hosting is not reverted (#123) (#147) (@seabbs-bot)
fix: preserve a caller with: block documented by comments across update() (#117) (#148) (@seabbs-bot)
fix: read submodule docstrings from their own meta in test_docstring_format (#124) (#149) (@seabbs-bot)
fix: seed the docs env with the kit so the docs build resolves (#115 part 3) (#150) (@seabbs-bot)
fix: benchmark-history supports unregistered packages + pre-first-tag bootstrap (#125) (#151) (@seabbs-bot)
feat: package-level downgrade-compat opt-out that survives template sync (#121) (#152) (@seabbs-bot)
fix: strip seed's leading HTML comment from rendered Benchmarks page (#145) (#155) (@seabbs-bot)
fix: seed infrastructure page in its own Development nav section (#136) (#156) (@seabbs-bot)
fix: drop unwired benchmark/comment (asv_comment) env from scaffold (#126) (#157) (@seabbs-bot)
fix: harden version-on-demand against comment-body shell injection (#158) (#159) (@seabbs-bot)
fix: preserve adopter DOI badge across update()/template-sync (#161) (#164) (@seabbs-bot)
fix: package-owned opt-out for the force-managed AD driver (#162) (#165) (@seabbs-bot)
fix: benchmark-history parked triggers survive template-sync (#153) (#166) (@seabbs-bot)
feat: configurable docs-build timeout on document.yaml (#154) (#167) (@seabbs-bot)
fix: API-page generator includes re-exported + public-only bindings (#160) (#168) (@seabbs-bot)
fix: managed docs/quality tolerate unseeded package-owned config (#163) (#169) (@seabbs-bot)
fix: guard the #160 public-binding test fixture for lts (Julia 1.10) (#171) (@seabbs-bot)
fix: gate the #160 rendered dep_public assertion for lts (#172) (@seabbs-bot)
docs: kit's own logo (dogfood) + test/benchmark/AD infrastructure reference pages (#174) (@seabbs-bot)
feat: manage README standard sections (Contributing/CoC/How-to-cite) + CITATION.cff (#67) (#176) (@seabbs-bot)
fix: link CITATION.cff via GitHub URL so docs linkcheck passes (#177) (@seabbs-bot)
refactor!: rename exported
update/generatetoscaffold_update/scaffold_generate(#178) (@seabbs-bot)
Closed issues:
scaffold hardcodes MIT LICENSE as a managed file: add a license input + make LICENSE package-owned (sync reverts deliberate licences) (#14)
JET runner cannot analyse a DynamicPPL @model package cleanly (false positives on ~-assigned locals) (#16)
test_explicit_imports: check_no_implicit_imports is un-ignorable and breaks @reexport (#17)
test_doctest + @meta CurrentModule fails under TestItemRunner isolation (#18)
scaffolded test envs depend on EpiAwarePackageTools with no [sources] entry → can't resolve when unregistered (#19)
scaffold writes benchmark/ scripts but no benchmark/Project.toml —
--project=benchmarkhas no env (#20)scaffold ships no .gitignore → Manifest.toml committed, breaks lts CI + trips detect-secrets (#31)
scaffolded dependabot.yml sets reviewers/assignees to a bare org → GitHub can't assign (#32)
scaffold sets up plain Documenter, not DocumenterVitepress (the org docs standard) (#33)
coverage caller uses fail_ci_if_error: true → CI red out-of-the-box without CODECOV_TOKEN on a protected branch (#34)
scaffold ships no .github/CODEOWNERS or ISSUE_TEMPLATE/ (org standard has both) (#36)
scaffold-generated root Project.toml has no [workspace] stanza (#37)
scaffold-generated test/Project.toml has no [compat] block (#38)
scaffold ships no README template (org-standard badge table + capabilities section) (#46)
offer AD testing (per-backend workflows + README AD badges) as a scaffold option (opt-in/opt-out) (#49)
scaffold ships a managed benchmark harness (benchmark/run.jl + benchmarks.jl + Project.toml) but no CI workflow to run it (#50)
scaffolded docs workflow cancels the main deploy (cancel-in-progress) + lacks gh-pages deploy serialisation (#51)
CD-adoption readiness: kit gaps not covered by #37/#38/#46/#49/#50 (#52)
Managed .gitignore + codecov (ad=true) drop two settings CD needs (#56)
Style: lowercase structural ALL-CAPS emphasis in src + tests (match CD #513) (#57)
DRY: unify the lazy Base.require loader and the isolated-env subprocess runner (#58)
Scaffold/generate tests never instantiate or run the generated environments (#59)
Managed .gitignore overwrites package-owned keep-rules on update (#65)
Manage standard README body sections (Contributing / Code of conduct) with package-owned content hooks (#67)
scaffold: set DocumenterVitepress deploy_url for the org custom-domain convention (docs CSS 404s otherwise) (#69)
update()/template-sync reverts code-owner handle to generic placeholder (CODEOWNERS + dependabot reviewers) (#72)
update() strips package-owned 'with:' inputs on managed CI callers (reverts a deliberate Julia floor/matrix) (#73)
JET: _resolve_docs_subdomain / DocsBuild type instability (4 findings) (#77)
Docs/README CD-parity gaps: getting-started split, CI-setup docs, citation, GitHub stars, self-as-example (#80)
Coverage CI red: codecov rejects upload — CODECOV_TOKEN secret needed (Token required, not valid tokenless upload) (#82)
Benchmarks should be opt-in: scaffold emits an empty Benchmarks docs page for packages with no suite (#84)
JuliaFormatter version skew: in-process quality check (v2.10.1) vs isolated test/formatter env (v2.5.5) (#89)
Local docs build silently truncates index.md and masks dead links under some node_modules/instantiate orderings (#91)
Centralise
usingin the main module: hoist DocStringExtensions import out of docstrings.jl (#105)StarUs.vue: adopt CD's compact icon-only mobile fallback (<560px) (#109)
pre-commit.yaml template is missing a concurrency: block (#110)
Bump pinned actions in scaffold templates: setup-julia v2→v3, create-pull-request v7→v8 (#112)
Formatter version skew: templates pin JuliaFormatter 2.10.1 but shared format-check.yml installs 2.5.5 (#114)
update(): with: preservation (#73) misses blocks when comments sit between uses: and with: (#117)
Shipped .secrets.baseline template is stale (detect-secrets 1.4.0); update() downgrades adopters (#118)
Managed test.yaml template needs a package-level opt-out for downgrade-compat (and to preserve with: input overrides) on template sync (#121)
Omitted reviewer leaks the bare org into the increment-version assignee default, breaking PR updates (#122)
update() silently reverts docs_subdomain, breaking custom-domain docs CSS (#123)
test_docstring_format cannot see submodule docstrings (public TestUtils gets a permanent @test_skip) (#124)
benchmark-history template: support unregistered packages (–url) and the pre-first-tag bootstrap (#125)
Scaffolded benchmark/comment/ (asv_comment) env is not wired to any workflow (#126)
Scaffold seeds the infrastructure/template-sync page under Getting started (#136)
build_benchmark_page splices the seeded HTML comment onto the rendered Benchmarks page (#145)
benchmark-history.yaml: parked push/tag triggers (unregistered [sources] dep) don't survive template-sync (#153)
Scaffolded document.yaml should allow setting the docs-build timeout_minutes (#154)
version-on-demand: comment body shell-injected into run: (functional failure on special chars + security) (#158)
DocsBuild API-page generator misses re-exported and public-only bindings (broken @refs in built docs) (#160)
update() strips adopter DOI badge — add _detect_doi to preserve it across update()/template-sync (#161)
test/ad/setup.jl force-managed clobbers package-owned AD driver on unmigrated ADFixtures (MethodError on category=) (#162)
update() rewrites managed make.jl/quality.jl to depend on package-owned config it never seeds for existing adopters (#163)
Every release, including any older than those above, is listed on the releases page.