You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
CI follow-ups from #140 review (shared with atelier-store) #144
Copilot's review of #140 raised three findings that apply to atelier-store too, since IssueTracker now shares its workflow baseline. Fix them in both repos.
1. Releases can be versioned out of merge order
release.yml uses per-PR concurrency (release-<pr number>). If two PRs merge close together, the later one can reserve the next tag first. The earlier one then takes the version after it on an older commit, so the "latest" release leaves out the later PR's changes and the generated release ranges are wrong. The tag push stops duplicate versions but doesn't serialize releases in main order.
Possible fix: one concurrency group for all release runs (release-main, cancel-in-progress: false), with each run versioning from its own merge commit.
2. The pre-commit hook lints the working tree, not the staged content
.github/hooks/pre-commit runs markdownlint on the working-tree paths. With a partially staged Markdown file, the working copy can pass while the staged version fails, so the commit goes through and CI fails later.
Possible fix: lint an index snapshot (write each file from git show :path to a temp dir), or refuse files that have unstaged changes.
3. The test matrix rebuilds each project
The matrix jobs run on fresh runners, don't restore the build-artifact cache, and dotnet test rebuilds every project that doesn't set NO_BUILD. That's correct, but it costs CI time.
Possible fix: upload the build output as an artifact (or restore the cache) and use --no-build everywhere, or drop the unused "Cache build artifacts" step and describe the jobs as rebuilding per project.
Activity
ci(hooks): Lint the staged Markdown, not the working copy (#170)
ci(release): Release merged PRs one at a time, in merge order (#172)
ci: Drop the unused build-artifact cache (#178)
test(hooks): Fail the rename case when git reports no rename (#180)
ci(hooks): Adopt the shared branch-name standard (#182)
fix(release): Catch a draft's other-PR marker anywhere in a line
refactor(release): Move the draft Release decision into a tested helper
fix(release): Recognise a draft's own-line marker before a CRLF ending
fix(release): Skip a named PR merged elsewhere; mark a published draft (
test(hooks): Test uppercase slugs apart from the chore/ digit rule (#186
ci: Drop the build cache no job restores (#99)
fix(ci): Escape line breaks in a logged path; keep CR in file names
ci: Classify a PR's changed files in a tested script (#188)
fix(release): Wait for a just-published Release to be listed (#190)
ci(release): List again every 2s, for up to 30s (#192)
mpaulosky commentedon Sep 30, 2026
All three findings are fixed here and in atelier-store (mpaulosky/atelier-store#86):
The branch-name standard (#182, #186) came along the way. The process is written up in the
repo-ci-baselineskill.