Skip to content

feat(inkless:release): add changelog generator and backfill 0.33..0.44#713

Draft
jeqo wants to merge 6 commits into
jeqo/fix-releasesfrom
jeqo/changelog
Draft

feat(inkless:release): add changelog generator and backfill 0.33..0.44#713
jeqo wants to merge 6 commits into
jeqo/fix-releasesfrom
jeqo/changelog

Conversation

@jeqo

@jeqo jeqo commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Adds Inkless changelog generation and wires it into the release notes. Stacks on #714 (which owns inkless-publish.yml).

Changes

  • 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).
  • Backfill docs/inkless/CHANGELOG.md for increments 0.33..0.44 and link it from the docs index.
  • finalize-release now 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.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-changelog skill and gen-changelog.py helper to draft changelog/release-notes content between inkless-release-* tags.
  • Backfill docs/inkless/CHANGELOG.md for increments 0.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.

Comment thread .ai-agents/skills/inkless-changelog/gen-changelog.py
Comment thread .ai-agents/skills/inkless-changelog/gen-changelog.py
Comment thread .ai-agents/skills/inkless-changelog/gen-changelog.py
Comment thread .ai-agents/skills/inkless-changelog/gen-changelog.py
Comment thread .ai-agents/skills/inkless-changelog/SKILL.md Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment thread .ai-agents/skills/inkless-changelog/gen-changelog.py

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

Comment thread .ai-agents/skills/inkless-changelog/gen-changelog.py

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 named Attribute, so newly added/removed MBeans will also emit a bogus ... :: Attribute attr 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
jeqo marked this pull request as ready for review July 22, 2026 07:17
@jeqo
jeqo requested a review from EelisK July 22, 2026 07:54
jeqo added 4 commits July 22, 2026 18:26
…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
jeqo marked this pull request as draft July 22, 2026 18:26
jeqo added 2 commits July 22, 2026 21:28
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
jeqo force-pushed the jeqo/changelog branch from a3e5c5b to 1d5b64f Compare July 22, 2026 18:36
@jeqo
jeqo changed the base branch from main to jeqo/fix-releases July 22, 2026 18:37
@jeqo
jeqo force-pushed the jeqo/fix-releases branch 2 times, most recently from f7f0022 to 20fbce8 Compare July 22, 2026 18:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants