Skip to content

Changelog fragments plus bun docker/pr-ready.ts - #89

Merged
ryuzdev merged 1 commit into
mainfrom
chore/changelog-fragments
Oct 22, 2026
Merged

ryuzdev merged 1 commit into
mainfrom
chore/changelog-fragments

Conversation

@ryuzdev

@ryuzdev ryuzdev commented Oct 22, 2026

Copy link
Copy Markdown
Member

Slice B (items 1, 11). Draft; no e2e label (fast suite covers it).

What

  • Release notes move from ## [Unreleased] to changelog.d/<topic>.md fragments: 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 at changelog.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 vs git merge-base origin/main HEAD (runner/ui/cli/docs/workflows), gates per area (bun run check always; cargo fmt/clippy/test; tsc/test/build; always check-changelog, check-versions, check-tests when present), git fetch + git merge-tree --write-tree mergeability 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.
  • Tests beside the scripts (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.
  • Docs: AGENTS.md release step, Agent-behavior fragment rule, Build-and-run pr-ready line. No other repo docs told contributors to edit [Unreleased] (grepped).
  • No toolchain pin found (CI uses dtolnay/rust-toolchain@stable, no rust-version in Cargo.toml): pr-ready documents this and uses ~/.cargo/bin/cargo.

Cutover proof (no line lost)

Ran with only the cutover fragment present:

$ bun docker/changelog-release.ts 0.1.0-alpha.9 2026-10-22 --dry-run > /tmp/assembled.md
$ git show HEAD:CHANGELOG.md | awk '/^## \[Unreleased\]/{f=1;next} f&&/^## \[/{exit} f' | grep -v '^$' > /tmp/old-body.txt
$ awk '/^## \[0.1.0-alpha.9\]/{f=1;next} f&&/^## \[/{exit} f' /tmp/assembled.md | grep -v '^$' > /tmp/new-body.txt
$ diff /tmp/old-body.txt /tmp/new-body.txt && echo CUTOVER-DIFF-EMPTY
CUTOVER-DIFF-EMPTY

(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

pr-ready: areas [docs, workflows]
bun run check    PASS  ok
check-changelog  PASS  ok
check-versions   PASS  ok
check-tests      SKIP  docker/check-tests.ts not present yet (slice C)
merge-tree       PASS  clean
sensitive  INFO  no sensitive list yet (.github/security-paths.yml missing)

Verification

  • bun run check clean; bun test docker/ 26/26; UI tsc --noEmit clean, UI tests 589/589, bun run build clean; cargo fmt/clippy clean, cargo test --locked 582/582.
  • New check rejects the pre-cutover tree (verified before cutover: fails on [Unreleased] has entries).

Notes for the parent

  • check.yml gains one step (bun test docker/); slice C's check-tests.ts joins it automatically when it lands. Overlap with C is that step only.
  • images.yml untouched (awk verified working).

@coderabbitai

coderabbitai Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You'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.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
📥 Commits

Reviewing files that changed from the base of the PR and between 7c0986e and 782765c.

⛔ Files ignored due to path filters: 3
  • bun.lock is excluded by !**/*.lock, !bun.lock
  • changelog.d/alpha9-before-fragments.md is excluded by !changelog.d/**
  • changelog.d/changelog-fragments.md is excluded by !changelog.d/**
📒 Files selected for processing: 11
  • .github/workflows/check.yml
  • AGENTS.md
  • CHANGELOG.md
  • docker/changelog-lib.test.ts
  • docker/changelog-lib.ts
  • docker/changelog-release.test.ts
  • docker/changelog-release.ts
  • docker/check-changelog.ts
  • docker/pr-ready.test.ts
  • docker/pr-ready.ts
  • package.json
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

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.
@ryuzdev
ryuzdev marked this pull request as ready for review October 22, 2026 10:42
@ryuzdev
ryuzdev force-pushed the chore/changelog-fragments branch from b11c477 to 782765c Compare October 22, 2026 10:42
@ryuzdev

ryuzdev commented Oct 22, 2026

Copy link
Copy Markdown
Member Author

Parent: rebased onto 7c0986e, which brings in #85 and #87. I redid the cutover against current main: changelog.d/alpha9-before-fragments.md now holds main's whole [Unreleased] body, with 19 bullets (#85's two and #87's one included).

Dry-run proof: I assembled only that fragment into a temp copy with changelog-release.ts and diffed the result against main's [Unreleased], blank-line-insensitive. The output was CUTOVER-DIFF-EMPTY. bun run check, bun test docker/ (26 pass), check-changelog and check-versions all pass.

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.

@github-actions github-actions Bot added the security-sensitive Touches .github/security-paths.yml; needs security-reviewed to pass security-gate label Oct 22, 2026
@ryuzdev ryuzdev added the security-reviewed A reviewer (never the author) read this sensitive diff; new commits remove it label Oct 22, 2026
@ryuzdev
ryuzdev added this pull request to the merge queue Oct 22, 2026
Merged via the queue into main with commit 519ecc5 Oct 22, 2026
13 of 14 checks passed
@ryuzdev
ryuzdev deleted the chore/changelog-fragments branch October 22, 2026 12:14
ryuzdev added a commit that referenced this pull request Oct 22, 2026
…ecord the D3 measurement

Squashed from fix/lane-doctor-polish (c66026f) for one rebase across
the changelog-fragment cutover (#89). See PR #81.
ryuzdev added a commit that referenced this pull request Oct 22, 2026
Squashed from feat/credential-sweep (3ae26f7 + 8c2ee31) for one rebase
across the changelog-fragment cutover (#89). See PR #83 and the security
reviews (round 1, round 2).
ryuzdev added a commit that referenced this pull request Oct 22, 2026
…-tests.ts)

Squashed from test/no-retries-no-sleeps (09d3cce) for one rebase across
the changelog-fragment cutover (#89). See PR #93.
ryuzdev added a commit that referenced this pull request Oct 22, 2026
… 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).
ryuzdev added a commit that referenced this pull request Oct 22, 2026
…-tests.ts)

Squashed from test/no-retries-no-sleeps (09d3cce) for one rebase across
the changelog-fragment cutover (#89). See PR #93.
ryuzdev added a commit that referenced this pull request Oct 22, 2026
…, always-dumped lane logs

Squashed from e2e/parallel-slots (99fd46d + the make nuke fix) for one
rebase across #89 (fragments) and #81 (fleet peaks). See PR #88.
ryuzdev added a commit that referenced this pull request Oct 22, 2026
…, always-dumped lane logs

Squashed from e2e/parallel-slots (99fd46d + the make nuke fix) for one
rebase across #89 (fragments) and #81 (fleet peaks). See PR #88.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

security-reviewed A reviewer (never the author) read this sensitive diff; new commits remove it security-sensitive Touches .github/security-paths.yml; needs security-reviewed to pass security-gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant