Skip to content

chore: sync master into develop (after Phase 3 cutover)#316

Merged
ton77v merged 5 commits into
developfrom
sync/master-into-develop
May 13, 2026
Merged

chore: sync master into develop (after Phase 3 cutover)#316
ton77v merged 5 commits into
developfrom
sync/master-into-develop

Conversation

@ton77v
Copy link
Copy Markdown
Collaborator

@ton77v ton77v commented May 13, 2026

Why

develop is the default branch but the changelog-form flow lives on master (changelog_watch.yml fires on master push). Two recent PRs landed directly on master:

  • #314 — 66-version YAML migration (already merged)
  • #315 — Phase 3 workflows + render + Issue Forms (open, merge this first)

Without this sync, develop drifts further from master, and the next develop → master release merge would conflict / re-introduce stale changelog state.

Pattern mirrors prior maintenance (e.g. c215bd3 Merge branch 'master' into develop).

Stay draft until #315 merges

Before clicking "Ready for review":

  1. Wait for feat(changelog): Phase 3 - Issue Forms + render + structured webhook #315 to merge into master
  2. Rebase this branch on latest develop and re-merge master:
    git checkout sync/master-into-develop
    git fetch origin
    git reset --hard origin/develop
    git merge origin/master --no-edit
    git push --force-with-lease
  3. Flip from draft → ready, merge as a regular merge commit (preserves the cross-branch history).

Scope

Pure merge — no manual edits in this branch. Carries:

  • changelog/*.yaml (66 versions migrated)
  • .github/workflows/changelog_form.yml, render_changelog.yml, maintainer_gate.yml
  • .github/ISSUE_TEMPLATE/changelog-entry.yml + config.yml
  • .github/schemas/changelog-entry.schema.json
  • .github/changelog-config.yml
  • Modified .github/workflows/changelog_watch.yml

🦀 sent by Claude Code

Summary by CodeRabbit

  • Documentation
    • Comprehensive release notes now available documenting versions 1.26.0 through 1.69.1, including security updates, new features, enhancements, and bug fixes across all releases.

Review Change Stack

integrations.repos.commit_and_push and others added 2 commits May 10, 2026 06:32
…es) (#314)

feat(changelog): migrate 66 versions / 518 entries to per-version YAMLs

Phase 2 of UI-for-Changelog migration (beshu-tech/ror-api#86).

Generated by scripts/migrate_changelog.py (beshu-tech/ror-api#90), one-shot
parse of the live changelog.md. Hash parity verified: HashTitles.from_md()
of each YAML-rendered bullet matches the original on every version, so
ror-api will not re-run LLM descriptions for any existing entry.

changelog.md kept as-is — will become auto-generated mirror in Phase 3
once render workflow + Issue Forms land.

Edge cases (3 entries) emitted with components_raw + manual-review comment:
- 1.43.0: (KBN|PRO) — PRO product variant
- 1.48.0: (KBN < 7.9.x) — version-qualified component
- 1.49.0: (KBN < 7.9.0) — version-qualified component

These already had non-canonical components in original changelog.md; left
verbatim so existing LLM descriptions stay valid. Maintainer can adjust
manually if desired.
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 13, 2026

Warning

Rate limit exceeded

@ton77v has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 52 minutes and 59 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 4f01a203-1a16-428c-9cdd-2e244333a16f

📥 Commits

Reviewing files that changed from the base of the PR and between beebc92 and bd27e18.

📒 Files selected for processing (76)
  • .github/ISSUE_TEMPLATE/changelog-entry.yml
  • .github/ISSUE_TEMPLATE/config.yml
  • .github/changelog-config.yml
  • .github/schemas/changelog-entry.schema.json
  • .github/workflows/changelog_form.yml
  • .github/workflows/changelog_watch.yml
  • .github/workflows/maintainer_gate.yml
  • .github/workflows/render_changelog.yml
  • changelog.md
  • changelog/1.26.0.yaml
  • changelog/1.26.1.yaml
  • changelog/1.27.0.yaml
  • changelog/1.27.1.yaml
  • changelog/1.28.0.yaml
  • changelog/1.28.1.yaml
  • changelog/1.28.2.yaml
  • changelog/1.29.0.yaml
  • changelog/1.30.0.yaml
  • changelog/1.30.1.yaml
  • changelog/1.31.0.yaml
  • changelog/1.32.0.yaml
  • changelog/1.33.0.yaml
  • changelog/1.33.1.yaml
  • changelog/1.34.0.yaml
  • changelog/1.35.0.yaml
  • changelog/1.35.1.yaml
  • changelog/1.36.0.yaml
  • changelog/1.37.0.yaml
  • changelog/1.38.0.yaml
  • changelog/1.39.0.yaml
  • changelog/1.40.0.yaml
  • changelog/1.41.0.yaml
  • changelog/1.42.0.yaml
  • changelog/1.43.0.yaml
  • changelog/1.44.0.yaml
  • changelog/1.45.0.yaml
  • changelog/1.45.1.yaml
  • changelog/1.46.0.yaml
  • changelog/1.47.0.yaml
  • changelog/1.48.0.yaml
  • changelog/1.49.0.yaml
  • changelog/1.49.1.yaml
  • changelog/1.50.0.yaml
  • changelog/1.51.0.yaml
  • changelog/1.51.1.yaml
  • changelog/1.52.0.yaml
  • changelog/1.53.0.yaml
  • changelog/1.54.0.yaml
  • changelog/1.55.0.yaml
  • changelog/1.56.0.yaml
  • changelog/1.57.0.yaml
  • changelog/1.57.1.yaml
  • changelog/1.57.2.yaml
  • changelog/1.57.3.yaml
  • changelog/1.58.0.yaml
  • changelog/1.59.0.yaml
  • changelog/1.60.0.yaml
  • changelog/1.61.0.yaml
  • changelog/1.61.1.yaml
  • changelog/1.62.0.yaml
  • changelog/1.63.0.yaml
  • changelog/1.64.0.yaml
  • changelog/1.64.1.yaml
  • changelog/1.64.2.yaml
  • changelog/1.65.0.yaml
  • changelog/1.65.1.yaml
  • changelog/1.66.0.yaml
  • changelog/1.66.1.yaml
  • changelog/1.67.0.yaml
  • changelog/1.67.1.yaml
  • changelog/1.67.2.yaml
  • changelog/1.67.3.yaml
  • changelog/1.68.0.yaml
  • changelog/1.69.0.yaml
  • changelog/1.69.1.yaml
  • detailed_changelog.md
📝 Walkthrough

Walkthrough

This PR establishes a complete changelog management system for the ReadonlyREST documentation repository. It introduces GitHub issue templates, JSON schema validation, and four automation workflows that collectively enable maintainers to submit changelog entries through issues, which are parsed into structured YAML, validated, rendered to markdown, and published via webhook. The PR also migrates 44 historical release versions into the new YAML format with corresponding markdown documentation updates.

Changes

Changelog Management System

Layer / File(s) Summary
Configuration and validation schema
.github/ISSUE_TEMPLATE/changelog-entry.yml, .github/ISSUE_TEMPLATE/config.yml, .github/changelog-config.yml, .github/schemas/changelog-entry.schema.json
Issue template defines maintainer-only changelog form with Version and Notes fields. Config file disables blank issues and redirects to Discussions. JSON schema validates entries with version (SemVer), release_date (ISO), and typed changelog items scoped to components (es/kbn/eck), with legacy components_raw support.
Maintainer access gate workflow
.github/workflows/maintainer_gate.yml
Workflow triggered on new changelog-entry issues, checks author association against allowlist (OWNER/MEMBER/COLLABORATOR), and closes/locks issues from non-maintainers with explanatory comment.
Changelog form parsing and PR creation
.github/workflows/changelog_form.yml
Parses issue body Version/Notes sections, validates and normalizes entries, generates YAML changelog file, creates/updates PR via peter-evans/create-pull-request, reads auto_merge config, optionally merges PR automatically, and updates issue with bot comment containing PR link and status.
Changelog rendering and webhook publishing
.github/workflows/render_changelog.yml, .github/workflows/changelog_watch.yml
Render workflow validates YAML against schema and generates markdown changelog.md on push/PR. Watch workflow detects per-file YAML changes, derives event type (added/modified/deleted), constructs JSON payloads with YAML content, and POSTs to webhook URL with retry logic.
Historical changelog releases 1.26.0–1.69.1
changelog/*.yaml
44 release YAML files containing structured entries (security/new/enhancement/warning/fix) scoped to components (es/kbn/eck) with descriptive text and CVE references. Includes edge-case entries marked for manual review using components_raw syntax.
Detailed changelog markdown updates
detailed_changelog.md
Expands CVE-2026-2950 Lodash bypass description, generalizes remediation text, restructures version-compatibility notes into <details>/<summary> blocks, and refines fix entry descriptions.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • beshu-tech/readonlyrest-docs#271: Updates detailed_changelog.md with inline changelog entry formatting and description refinements at the same documentation file level.

Suggested reviewers

  • coutoPL

Poem

🐰 A warren of workflows now springs to life,
Changelogs flow through YAML, neat and bright—
Issues to PRs, a parser's delight,
Forty-four versions, all organized right!
From schema to markdown, the story takes flight.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch sync/master-into-develop

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 and usage tips.

ton77v and others added 3 commits May 13, 2026 14:48
…315)

* feat(changelog): Phase 3 — Issue Forms, render workflow, structured webhook

Companion to beshu-tech/ror-api#86 + #91. After this lands + the prereq repo
settings are applied, the form-driven changelog flow is live end-to-end.

ADD .github/ISSUE_TEMPLATE/changelog-entry.yml + config.yml
  2-field form (version + freeform notes). Each line: <type> (<comp>) <text>.
  Label 'changelog-entry' applied; blank issues disabled.

ADD .github/workflows/maintainer_gate.yml
  Closes + locks changelog issues filed by non-OWNER/MEMBER/COLLABORATOR.
  ~10-30s public window accepted (per prior agreement).

ADD .github/workflows/changelog_form.yml
  On issues [opened, edited] with 'changelog-entry' label:
    1. Parse form body
    2. Map types + canonical components (es/kbn/eck, combinable | / & 'and')
    3. Validate version semver
    4. Write changelog/<version>.yaml + open/refresh PR via peter-evans
    5. Auto-rename issue title, comment PR link, close issue
  Reads .github/changelog-config.yml -> auto_merge toggle. Default false.

ADD .github/workflows/render_changelog.yml
  On push to master OR PR touching changelog/*.yaml:
    - ajv schema validation
    - filename ↔ inner version match check
    - On push only: render changelog.md from YAMLs (semver.rcompare sort),
      commit + push back to master

ADD .github/schemas/changelog-entry.schema.json
  Required: version (semver+pre-release), release_date (date), entries (>=1).
  Per-entry: type enum (new/fix/security/warning/enhancement),
             components array (es/kbn/eck), text (>=1),
             optional components_raw (preserves original separator for
             hash parity with ror-api stored LLM descriptions).

ADD .github/changelog-config.yml
  Single source for form behavior. Starts with auto_merge: false — team
  reviews each PR manually for first weeks; PR-flip to true once trusted.

MODIFY .github/workflows/changelog_watch.yml
  Now fires on push touching changelog/*.yaml (not changelog.md — that's
  now an auto-gen mirror). Per-version event-typed POST to ror-api:
    {event: version_added|modified|deleted, version: X.Y.Z, yaml: <content>}
  Bot-pushed changelog.md regens don't trigger watch (paths filter excludes).
  Legacy diff payload dropped on this side (ror-api fallback kept for 1
  week per Phase 4 cleanup plan).

* fix(ci): tolerate legacy entries — schema accepts components_raw alone + improved migration

CI was failing on 1.26.0.yaml (and other pre-1.30 versions): empty 'entries:'
because ror-api's parse_version_details breaks on the blank line right after
the version header that older entries have.

Fixes:
1. Migration script: tolerant bullet extraction (skip blank lines between
   header and bullets) — pulls 971 entries from 518 previously.
2. Schema: 'components' now optional when 'components_raw' is present.
   Required for new form-driven entries (form action always emits components);
   legacy migration entries with non-canonical strings (KBN ENT, PRO/Enterprise,
   etc.) emit components_raw only and pass.
3. Schema: type can be any string, not just the canonical 5. Pre-1.30
   entries had freeform type labels that don't map cleanly.

Hash parity: 64/66 versions still match (was 66/66 with the smaller dataset).
The 2 that don't (1.26.0, 1.35.0) had backslash-escaped parens that produce
different normalized strings post-unescape — acceptable trade-off, costs ~2
LLM re-runs on next sync, much better than 60+ missing entries.

Edge cases (183, mostly KBN ENT / Enterprise / PRO product variants)
emitted with components_raw verbatim + manual-review comment block.

* fix(ci): regex tolerates emoji-before-bold + missing parens; never emit empty text/components_raw

Updates 1.26.0.yaml + 1.35.0.yaml to parse the previously-unparseable legacy bullets
('emoji**Type**', no '(component)' at all). Truly unparseable entries fall back to
components_raw='unparsed' + text=original-bullet so schema passes.

* review: address @coutoPL comments

- schema: drop null from entries.type, restore minItems: 1. After parser fixes
  in migration script, no YAML produces null entries; allowing null was dead
  code that would have masked future bugs (render JS crashes on null anyway).
- changelog-config.yml: auto_merge true -> false. Ship as false per the file's
  own rollout comment — team manually reviews PRs first releases, then PR-flips.
@ton77v ton77v force-pushed the sync/master-into-develop branch from 4957b39 to bd27e18 Compare May 13, 2026 07:50
@ton77v ton77v marked this pull request as ready for review May 13, 2026 07:50
@ton77v ton77v merged commit b548452 into develop May 13, 2026
3 of 4 checks passed
@ton77v ton77v deleted the sync/master-into-develop branch May 13, 2026 07: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.

1 participant