Repository navigation
Changelog fragments plus bun docker/pr-ready.ts - #89
Conversation
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 47 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Release notes move from ## [Unreleased] to changelog.d/<topic>.md fragments (one per PR, verbatim cutover of the current notes); check-changelog.ts enforces the new invariant, changelog-release.ts assembles the dated section, and pr-ready.ts runs every local gate.
b11c477 to
782765c
Compare
|
Parent: rebased onto Dry-run proof: I assembled only that fragment into a temp copy with The parent reviewed and smoke-tested the release assembly earlier, too. Once CI is green, this is the first PR through the new merge queue. |
… a contested enable retries F1 (PR #97): write_file formatted the io::Error into the message, so is_busy/is_gone (which classify off error.chain()) never saw EBUSY and the first healthcheck exec landing between drain and enable bailed the boot. Squashed for one rebase across the changelog-fragment cutover (#89).
Slice B (items 1, 11). Draft; no e2e label (fast suite covers it).
What
## [Unreleased]tochangelog.d/<topic>.mdfragments: the CHANGELOG's own### <Section>headings with-bullets (allowlist inventoried from CHANGELOG.md: Operator action required, Added, Changed, Removed, Fixed, Security).## [Unreleased]stays as an empty section with a pointer comment.docker/check-changelog.ts: keeps both existing forms, and now requires every fragment to parse (known sections only, >=1 bullet), and fails any[Unreleased]entries with a message pointing atchangelog.d/.docker/changelog-release.ts <version> [date] [--dry-run]: assembles fragments into## [<version>] - <date>right after Unreleased (canonical order, operator action first and always present as- None.when absent, bullets verbatim in file-name order), deletes the fragments. Header starts with## [<version>]so the images.yml prerelease-notes awk matches unchanged.docker/pr-ready.ts: area detection vsgit merge-base origin/main HEAD(runner/ui/cli/docs/workflows), gates per area (bun run checkalways; cargo fmt/clippy/test; tsc/test/build; always check-changelog, check-versions, check-tests when present),git fetch+git merge-tree --write-treemergeability check (conflict message notes conflicting PRs get no CI), fragment-missing warning, sensitive-paths note (no list file yet),--skip-build, summary table. No pipes; exit codes read straight from spawned processes.bun test docker/, wired into check.yml): canonical order, operator default, verbatim multi-line bullets, unknown-heading rejection, Unreleased-edit rejection; area detection and glob matching (incl.!negation, dotfiles). Each failed before the implementation.[Unreleased](grepped).Cutover proof (no line lost)
Ran with only the cutover fragment present:
(blank-line-insensitive; separators are not preserved across regrouping, every content line survives; 16 bullets each side; awk extraction verified on the assembled section)
pr-ready on this branch
Verification
bun run checkclean;bun test docker/26/26; UItsc --noEmitclean, UI tests 589/589,bun run buildclean; cargo fmt/clippy clean,cargo test --locked582/582.[Unreleased] has entries).Notes for the parent
bun test docker/); slice C's check-tests.ts joins it automatically when it lands. Overlap with C is that step only.