Skip to content

chore: list experimental features' changes under an Experimental changelog heading - #150

Merged
andrewklatzke merged 1 commit into
mainfrom
xie/experimental-changelog-section
Oct 8, 2026
Merged

andrewklatzke merged 1 commit into
mainfrom
xie/experimental-changelog-section

Conversation

@XieX

@XieX XieX commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Lists changes to the two experimental features under an Experimental heading in each package's changelog, as TESTING.md §0.1 promises. The features are Agent Skills (scope skills) and Evaluations from Code (scope evaluations). Spec: https://github.com/launchdarkly/ai-sdks-monorepo/pull/50. JS twin: launchdarkly/js-ai-sdk#123.

How

release-please-config.json gains changelog-sections. Rows matching feat, fix and perf with scope skills or evaluations map to "Experimental". The rest of the list reproduces release-please 17.6.0's Python-strategy defaults (strategies/python.ts:31-44), which keep deps and a visible "Documentation" section, so every other commit renders exactly as before.

Matching on scope works because release-please hands changelog-sections to conventional-changelog-conventionalcommits 6.1.0 unchanged (manifest.ts:1397), and the preset's findTypeEntry checks an entry's scope (writer-opts.js:60-71). The first match wins, so the scoped rows come first, and "Experimental" is therefore the first heading. scope isn't in release-please's documented config schema. Rerun the checks below when upgrading release-please.

AGENTS.md gains a "PR Titles and the Changelog" section with the convention:

  • an experimental change uses its feature's scope, and only that one scope;
  • a PR that mixes core and experimental changes is split, or uses BEGIN_COMMIT_OVERRIDE;
  • a breaking experimental change uses ! while the package is 0.x, and drops it after 1.0.

Effect on the pending release

release-please release-pr --dry-run against this branch proposes the same five packages and versions as release PR #142. The one difference is the point of this PR: the evaluations commits move out of "Features" and "Bug Fixes" into "Experimental" for launchdarkly-ai-server 0.3.0 and launchdarkly-ai-python 0.2.0. They also still appear in "⚠ BREAKING CHANGES". docs(evaluations) stays under "Documentation". If this merges before #142, the 0.3.0 changelog will show that split.

Verification

  • Rendering: I ran release-please 17.6.0's own commit parser and DefaultChangelogNotes against this config, with synthetic commits. Non-experimental commits render byte-for-byte the same as with the Python defaults, and the scoped commits land under Experimental.
  • Dry run: compared with chore: release main #142, as above.
  • Agent Skills: feat(skills): Agent Skills #87 is retitled feat(skills): Agent Skills, so its squash commit lands under Experimental.

🤖 Generated with Claude Code


Note

Overview
Adds changelog-sections to release-please-config.json so squash-merged feat/fix/perf commits with scope skills or evaluations appear under an Experimental heading in package changelogs; other commit types keep the usual Python release-please sections (Features, Bug Fixes, etc.), with scoped rules listed first so they win matching.

Documents the same conventions in AGENTS.md under PR Titles and the Changelog: single-scope experimental PR titles, splitting or BEGIN_COMMIT_OVERRIDE when mixing core and experimental work, and how ! applies to breaking experimental changes before/after 1.0.

Reviewed by Cursor Bugbot for commit 0df5fb1. Bugbot is set up for automated code reviews on this repo. Configure here.

…gelog heading

feat, fix and perf commits scoped `skills` (Agent Skills) or `evaluations`
(Evaluations from Code) go under "Experimental" in each package's changelog,
as TESTING.md §0.1 promises for experimental features. The rest of the list
reproduces release-please's Python defaults, so other commits render exactly
as before. AGENTS.md documents the scope convention.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@andrewklatzke
andrewklatzke merged commit 458e320 into main Oct 8, 2026
8 checks passed
@andrewklatzke
andrewklatzke deleted the xie/experimental-changelog-section branch October 8, 2026 21:15
andrewklatzke pushed a commit to launchdarkly/js-ai-sdk that referenced this pull request Oct 8, 2026
…ing (#123)

## Summary

Lists Agent Skills changes under an **Experimental** heading in each
package's changelog, as TESTING.md §0.1 promises for an experimental
feature. Spec: launchdarkly/ai-sdks-monorepo#50.
Python twin: launchdarkly/python-ai-sdk#150.

## How

`release-please-config.json` gains `changelog-sections`. Rows matching
`feat`, `fix` and `perf` with scope `skills` map to "Experimental". The
rest of the list reproduces the defaults release-please 17.6.0 uses for
the Node strategy (the `conventionalcommits` preset's list), so every
other commit renders exactly as before.

Matching on scope works because release-please hands
`changelog-sections` to `conventional-changelog-conventionalcommits`
6.1.0 unchanged (`manifest.ts:1397`), and the preset's `findTypeEntry`
checks an entry's `scope` (`writer-opts.js:60-71`). The first match
wins, so the scoped rows come first, and "Experimental" is therefore the
first heading. `scope` isn't in release-please's documented config
schema. Rerun the checks below when upgrading release-please.

`AGENTS.md` gains a "PR Titles and the Changelog" section with the
convention:
- an experimental change uses its feature's scope, and only that one
scope;
- a PR that mixes core and experimental changes is split, or uses
`BEGIN_COMMIT_OVERRIDE`;
- a breaking experimental change uses `!` while the package is 0.x, and
drops it after 1.0.

The block sits at the end of the file so it doesn't conflict with #119,
which adds `plugins` after `bootstrap-sha` (`git merge-tree` is clean).

## Verification

- **Rendering:** I ran release-please 17.6.0's own commit parser and
`DefaultChangelogNotes` against this config, with synthetic commits.
- Non-experimental commits render byte-for-byte the same as with the
defaults.
- `feat(skills)`, `fix(skills)`, `perf(skills)` and `feat(skills)!` land
under Experimental. A breaking one also appears in "⚠ BREAKING CHANGES".
- `docs(skills)` stays hidden, `feat(skills,client)` lands under
Features, and `feat(client)` stays under Features.
- **Dry run:** `release-please release-pr --dry-run` against this branch
proposes the same packages, versions and notes as release PR #85, apart
from the date. Nothing on `main` uses the `skills` scope yet.
- **Agent Skills:** #71 is retitled `feat(skills): Agent Skills`, so its
squash commit lands under Experimental.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Overview**
> Configures **release-please** so Agent Skills work
(`feat`/`fix`/`perf` with scope `skills`) appears under an
**Experimental** changelog heading, while the rest of the section list
mirrors the default Node/conventional-commits preset so other commits
render unchanged.
> 
> Adds **PR Titles and the Changelog** to `AGENTS.md`, documenting
squash-merge titles, the single `skills` scope, mixed core/experimental
PRs (`BEGIN_COMMIT_OVERRIDE`), breaking experimental commits while
packages are 0.x, and removing experimental rows when a feature
graduates.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
5c1e697. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
XieX added a commit that referenced this pull request Oct 9, 2026
Brings in #145 (helper usage), #150 (Experimental changelog heading) and
#133 (strip tools from LangChain model constructor kwargs).

lifecycle.py merged without a conflict and keeps both sides: the usage
flush sits beside each flush_ai_sdk_info call, so on the BYOC path it runs
only after telemetry setup succeeds and the client is adopted, and on the
options path only after a successful setup. shutdown() runs
_clear_experimental_state() before client teardown, then resets usage
with sdk-info.

Root surface: add main's report_usage to ROOT_SURFACE.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

3 participants