feat(inkless:release): add changelog generator and backfill 0.33..0.44#713
Draft
jeqo wants to merge 6 commits into
Draft
feat(inkless:release): add changelog generator and backfill 0.33..0.44#713jeqo wants to merge 6 commits into
jeqo wants to merge 6 commits into
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Adds an Inkless release-docs workflow for generating changelog entries and release-notes summaries from git history plus configs.rst/metrics.rst diffs, and backfills the Inkless changelog for release increments 0.33 through 0.44.
Changes:
- Add a new
inkless-changelogskill andgen-changelog.pyhelper to draft changelog/release-notes content betweeninkless-release-*tags. - Backfill
docs/inkless/CHANGELOG.mdfor increments0.33..0.44. - Link the changelog from the Inkless docs index.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 5 comments.
| File | Description |
|---|---|
| docs/inkless/README.md | Adds a docs index link to the new changelog page. |
| docs/inkless/CHANGELOG.md | Introduces and backfills per-increment changelog entries for 0.33..0.44. |
| .ai-agents/skills/inkless-changelog/SKILL.md | Documents how to generate/curate changelog entries and release notes. |
| .ai-agents/skills/inkless-changelog/gen-changelog.py | Implements changelog/release-notes draft generation from git + docs diffs. |
Contributor
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
Comments suppressed due to low confidence (1)
.ai-agents/skills/inkless-changelog/gen-changelog.py:43
git()returns None on any git failure and the rest of the script treats that like empty output (e.g.,show()failing makes config/metric deltas look like “no changes”). For a release tool this is risky because it can silently generate an incorrect changelog when tags/paths are wrong or git isn’t available. Prefer failing fast with a clear error message.
def git(*args):
r = subprocess.run(["git", *args], capture_output=True, text=True)
if r.returncode != 0:
if r.stderr.strip():
print(f"warning: git {' '.join(args)}: {r.stderr.strip()}", file=sys.stderr)
return None
return r.stdout
Contributor
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 4 out of 4 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
.ai-agents/skills/inkless-changelog/gen-changelog.py:129
parse_metrics()treats the per-section table header line (Attribute name Description) as a metric attribute namedAttribute, so newly added/removed MBeans will also emit a bogus... :: Attributeattr delta. Skipping the header line avoids this noise in generated changelog drafts.
m = re.match(r"^([A-Za-z][a-zA-Z0-9\-\._]+)\s{2,}\S", line)
if m and cur:
attrs.add(f"{cur} :: {m.group(1)}")
jeqo
marked this pull request as ready for review
July 22, 2026 07:17
…cy.sh The release workflow's validate job invokes branch-consistency.sh --check to gate on actionable missing commits (by PR presence). Add the flag: it turns the actionable-missing count into a process exit code so CI can gate without parsing human-readable output. Old below-window commits are not actionable and do not fail the check.
…partial release Replace the validate job's exact-SHA ancestry check (git merge-base --is-ancestor MAIN_COMMIT) with branch-consistency.sh --check: release branches are built by cherry-picking, so commits exist under different SHAs and the SHA check could never pass. --check matches by PR number, the correct measure. Add resume=true: when a run created the tags but never published the Release, re-run with the same inkless_version to skip tagging and re-run build+publish (discovers branches/Kafka versions from the existing tags).
…dentation The release notes were built as a YAML block-scalar heredoc, so the leading indentation leaked into the markdown and rendered headings and bullets as an indented code block. Build the notes in a temp file with printf and pass --notes-file instead. The curated-changelog injection is split out to land with the inkless-changelog skill (the generator it calls lives there).
Clarify the prep->release seams in RELEASES.md: push branches is the prep gate; tags are created by the workflow (never by hand); resume=true finishes a partially-completed release; and a corrected break-glass build/publish procedure using the make targets with the right image tag format (<kafka>-<increment>-<arch>). The changelog-generation docs are split out to land with the inkless-changelog skill (the generator they reference lives there).
jeqo
marked this pull request as draft
July 22, 2026 18:26
Add gen-changelog.py + the inkless-changelog skill: diff conventional-commit history and configs.rst/metrics.rst between two inkless-release tags to produce a detailed CHANGELOG.md entry and a curated release-notes summary. Detects upstream syncs (apache/kafka merges + gradle version delta) and notes them. Backfill docs/inkless/CHANGELOG.md for increments 0.33..0.44 and link it from the docs index.
…otes The finalize-release job now runs gen-changelog.py --summary against the freshly created inkless-release-<N> tag and appends the curated feat/fix/config summary to the Release body (best-effort: falls back to boilerplate notes if generation fails). Requires fetch-depth: 0 so the generator can diff the previous tag. Also documents the changelog/release-notes flow in RELEASES.md. Depends on the inkless-changelog generator added in the previous commit; stacks on the release workflow (#714) which owns inkless-publish.yml.
jeqo
force-pushed
the
jeqo/fix-releases
branch
2 times, most recently
from
July 22, 2026 18:51
f7f0022 to
20fbce8
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds Inkless changelog generation and wires it into the release notes. Stacks on #714 (which owns
inkless-publish.yml).Changes
gen-changelog.py+ theinkless-changelogskill: diff conventional-commit history andconfigs.rst/metrics.rstbetween twoinkless-release-*tags to produce a detailedCHANGELOG.mdentry and a curated release-notes summary. Detects upstream syncs (apache/kafka merges + gradle version delta).docs/inkless/CHANGELOG.mdfor increments 0.33..0.44 and link it from the docs index.finalize-releasenow runs the generator against the freshly created tag and injects the curated summary into the GitHub Release body (best-effort: falls back to boilerplate notes if generation fails). Documents the changelog/release-notes flow in RELEASES.md.