From 0df5fb19acefed291397887927642293a52eeafd Mon Sep 17 00:00:00 2001 From: Christie Williams Date: Thu, 8 Oct 2026 14:46:53 -0400 Subject: [PATCH] chore: list experimental features' changes under an Experimental changelog heading MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- AGENTS.md | 12 ++++++++++++ release-please-config.json | 22 +++++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/AGENTS.md b/AGENTS.md index 305613a9..7cd59fbf 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -74,6 +74,18 @@ them mypy-clean under `strict` is a separate piece of work. The `UP046` rule (PEP 695 `type` statement syntax for generic classes) is **ignored** in `pyproject.toml`. Do not convert `class Foo(Generic[T]):` to PEP 695 syntax — it is a deliberate migration decision. +## PR Titles and the Changelog + +PRs are squash-merged with the PR title as the commit message, and release-please builds each package's changelog from those messages. + +- **A change to an experimental feature uses that feature's scope:** `skills` (Agent Skills) and `evaluations` (Evaluations from Code). `feat`, `fix` and `perf` commits with one of these scopes are listed under **Experimental** (`changelog-sections` in `release-please-config.json`), for example `feat(skills): watch skills for revocations`. Any other scope, such as `client`, lists the change as a core feature or fix. +- **Use exactly one scope.** `feat(skills,client):` matches no Experimental row, so it lands under Features. +- **A PR that changes both core and experimental behaviour** should be split. If it can't be, add a `BEGIN_COMMIT_OVERRIDE` block to its description with one conventional-commit line per change. An override also corrects a merged PR's title, as long as the release PR hasn't merged yet. +- **A breaking experimental change** uses `!` while the package is 0.x: `feat(skills)!:` bumps the minor version, which is what an experimental break is allowed. After 1.0, `!` would force a major release. Use `feat(skills):` without `!` instead, and say the change is breaking in the title. +- **When a feature is promoted to core,** remove its rows from `changelog-sections`. + +The rule is specified in `TESTING.md` §0.3 in `launchdarkly/ai-sdks-monorepo`. + ## Package Hierarchy The monorepo is organized into three tiers plus a convenience barrel. Dependencies only flow **downward** — never sideways between packages in the same tier, and never upward. diff --git a/release-please-config.json b/release-please-config.json index 9d2a04e3..1e7001b9 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -90,5 +90,25 @@ ], "component": "launchdarkly-ai-langchain-messages" } - } + }, + "changelog-sections": [ + { "type": "feat", "scope": "skills", "section": "Experimental" }, + { "type": "fix", "scope": "skills", "section": "Experimental" }, + { "type": "perf", "scope": "skills", "section": "Experimental" }, + { "type": "feat", "scope": "evaluations", "section": "Experimental" }, + { "type": "fix", "scope": "evaluations", "section": "Experimental" }, + { "type": "perf", "scope": "evaluations", "section": "Experimental" }, + { "type": "feat", "section": "Features" }, + { "type": "fix", "section": "Bug Fixes" }, + { "type": "perf", "section": "Performance Improvements" }, + { "type": "deps", "section": "Dependencies" }, + { "type": "revert", "section": "Reverts" }, + { "type": "docs", "section": "Documentation" }, + { "type": "style", "section": "Styles", "hidden": true }, + { "type": "chore", "section": "Miscellaneous Chores", "hidden": true }, + { "type": "refactor", "section": "Code Refactoring", "hidden": true }, + { "type": "test", "section": "Tests", "hidden": true }, + { "type": "build", "section": "Build System", "hidden": true }, + { "type": "ci", "section": "Continuous Integration", "hidden": true } + ] }