Skip to content

ci: run pythinker-code checks on every PR; align release docs - #17

Merged
elkaix merged 3 commits into
mainfrom
chore/align-release-docs-convention
May 29, 2026
Merged

ci: run pythinker-code checks on every PR; align release docs#17
elkaix merged 3 commits into
mainfrom
chore/align-release-docs-convention

Conversation

@elkaix

@elkaix elkaix commented May 29, 2026

Copy link
Copy Markdown
Member

Follow-up to the 0.25.0 release (#14), with the robust fix for the docs-only-PR merge blocker discovered during it.

Why

CodeRabbit flagged two changelog findings during #14 that were rooted in stale guidance, not the release. And this PR (originally docs-only) surfaced a structural CI gap: the required check / test (3.x) / release-validate contexts are path-filtered to code paths, so docs-only (and sdks/**-/examples/**-only) PRs never run them and stay BLOCKED under strict branch protection + enforce_admins — with no clean override.

Changes

  • .github/workflows/ci-pythinker-cli.yml — drop the pull_request path filter so the required checks run on every PR. One check run per context (no duplicate-context false-greens), real signal on every change. The push trigger keeps its path filter. This is the safe fix vs. a status-shim, which risks masking real failures on mixed PRs.
  • AGENTS.md — correct the Versioning section to the real 0.MINOR.PATCH scheme and rewrite the Release workflow to match actual practice: release/X.Y.Z branches, retained empty ## Unreleased + a new ## X.Y.Z (YYYY-MM-DD) section, the npm run sync step for the generated docs changelog, the protected-main PR gate, and annotated vX.Y.Z tags.
  • docs/scripts/sync-changelog.mjs — remove two now-dead Keep-a-Changelog transforms (bracket-title rewrite + ### Added/Changed/Fixed stripper); the root CHANGELOG.md already uses ## X.Y.Z (date) + ### What changed in this release.

Verification

  • node --check docs/scripts/sync-changelog.mjs passes; regenerated docs/en/release-notes/changelog.md is byte-identical before/after the sync-script change.
  • Workflow YAML validated: pull_request trigger unfiltered, push paths preserved.
  • The full pythinker-code CI runs on this PR (it touches .github/workflows/**), so the required checks report and it merges through the normal gate — no admin override.

Summary by CodeRabbit

  • Documentation

    • Clarified versioning to a 0.MINOR.PATCH scheme and updated release workflow steps (branch naming, changelog update process, tagging and release publishing).
  • Chores

    • Improved changelog sync to preserve release header and subsection formatting.
    • CI now runs the relevant pipeline on every pull request (removed previous PR path filters).

Review Change Stack

…cess

AGENTS.md documented a stale Keep-a-Changelog style that no longer matches
the repo: a MAJOR.MINOR.PATCH scheme with 1.x examples, bump-* branches,
renaming [Unreleased] to [X.Y] - YYYY-MM-DD, and git tag X.Y / git push --tags.
The actual process is 0.MINOR.PATCH, release/X.Y.Z branches, a retained empty
## Unreleased plus a ## X.Y.Z (YYYY-MM-DD) section, the npm run sync step for
the docs changelog, and annotated vX.Y.Z tags. Correct the Versioning and
Release workflow sections to match.

Also drop the now-dead title-rewrite and subsection-strip transforms in
sync-changelog.mjs: the root CHANGELOG already uses ## X.Y.Z (date) headers and
### What changed in this release subsections, so both regexes were no-ops. The
generated docs changelog is byte-identical before and after this change.
@coderabbitai

coderabbitai Bot commented May 29, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 4124cdaa-2ca1-47f9-8eef-91ddee66293c

📥 Commits

Reviewing files that changed from the base of the PR and between c65c183 and 6ace188.

📒 Files selected for processing (1)
  • .github/workflows/ci-pythinker-cli.yml

📝 Walkthrough

Walkthrough

Updates repository versioning to a 0.MINOR.PATCH model, revises the release checklist and changelog workflow (including docs regeneration), preserves root changelog formatting in the sync script, and changes CI to run on every pull request by removing pull_request path filters.

Changes

Versioning and Release Process

Layer / File(s) Summary
Versioning scheme definition
AGENTS.md
Major version pinned to 0; minor increments per release; patch numbers reserved for hotfixes.
Release workflow and checklist
AGENTS.md
Standardized release branch naming (e.g., release/0.25.0), move ## Unreleased entries into a dated version section and empty ## Unreleased, require npm run sync to regenerate docs changelog, sync pyproject.toml/uv.lock, use v-prefixed git tags with a release message, and clarify GitHub Actions publishes after tag push.
Changelog sync script preservation
docs/scripts/sync-changelog.mjs
Script now preserves root CHANGELOG.md release header formatting and ### What changed in this release subsections instead of rewriting or stripping them.

CI Workflow

Layer / File(s) Summary
CI pull_request trigger removal of path filter
.github/workflows/ci-pythinker-cli.yml
Removed pull_request.paths allowlist so the CI (pythinker-code) workflow runs on all pull requests.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Suggested labels

documentation

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed Title follows conventional commits format (ci: scope; description) and accurately reflects the main changes: CI workflow modification and release documentation alignment.
Description check ✅ Passed Description is comprehensive with clear Why/Changes/Verification sections; covers all modified files, explains the rationale (docs-only PR blocker fix), and includes verification steps.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/align-release-docs-convention

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

check / test (3.x) / release-validate are required status checks, but the
pull_request trigger was path-filtered to code paths. Docs-only (and
sdks/**- or examples/**-only) PRs never ran them, so the required contexts
never reported and the PR stayed BLOCKED under strict + enforce_admins with
no clean override. Drop the pull_request path filter so these checks run on
every PR: exactly one check run per context (no duplicate-context
false-greens) and real signal on every change. The push trigger keeps its
path filter unchanged.
@elkaix elkaix changed the title docs: align release workflow and changelog convention with actual process ci: run pythinker-code checks on every PR; align release docs May 29, 2026
@elkaix
elkaix merged commit d55218f into main May 29, 2026
17 checks passed
@elkaix
elkaix deleted the chore/align-release-docs-convention branch May 29, 2026 23:00
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