feat(releasekit): graph based licensing#4705
Conversation
Summary of ChangesHello @yesudeep, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request introduces core functionality for handling and evaluating software licenses within ReleaseKit by implementing a comprehensive SPDX license expression parser. This foundational component allows the system to understand and process complex license strings, paving the way for advanced license compatibility checks, including those that will leverage a license compatibility graph. Additionally, the documentation slides were updated by removing an outdated comparison table. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Changelog
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request introduces a new SPDX license expression parser, which is a crucial component for license compliance checks. The implementation is robust, well-documented, and follows good practices for parsing, including a clear separation of tokenizing and parsing logic, and immutable AST nodes. I have one suggestion to improve the future compatibility evaluation logic by ensuring the or_later flag is correctly propagated. The removal of the 'vs. Alternatives' section from the presentation slides is a straightforward content update. Overall, this is a high-quality contribution.
62cbce5 to
a8accd1
Compare
58236aa to
38907a3
Compare
32f616e to
02e7f4f
Compare
|
/gemini review |
There was a problem hiding this comment.
Code Review
This is an impressive and comprehensive addition for graph-based license management. The new functionality is well-structured across several new modules for detection, resolution, graph management, and fixing, which is great for maintainability. The use of performance optimizations like lru_cache and trigram similarity for fuzzy matching is well-thought-out. The documentation updates are also thorough. I have one high-severity comment regarding the use of regex for parsing XML in maven.py, which could be made more robust.
02e7f4f to
14bcbd3
Compare
9ddf65a to
c8ff5db
Compare
c8ff5db to
b968902
Compare
…on site The @patch decorator was targeting 'releasekit.checks._license_fetch.fetch_license_texts' but _universal.py imports the function into its own namespace via 'from releasekit.checks._license_fetch import fetch_license_texts'. This means the mock never intercepted the real call. The fix patches 'releasekit.checks._universal.fetch_license_texts' instead. Only test_fetch_failure was visibly broken because the real fetch succeeds for MIT — the other tests passed coincidentally.
83e7628 to
3ff56d7
Compare
|
/gemini review |
There was a problem hiding this comment.
Code Review
The pull request introduces a comprehensive graph-based licensing subsystem to ReleaseKit, enabling SPDX expression parsing, compatibility checking, and interactive remediation. The changes include new modules for license detection, fetching, lookup, and resolution, along with new workspace backends for various ecosystems. Documentation and test coverage have been significantly expanded to support these new features. The changes are well-structured and address a critical aspect of software supply chain compliance.
|
Warning Gemini encountered an error creating the review. You can try again by commenting |
…lidation The CycloneDX 1.5 schema (bom-1.5.schema.json) references spdx.schema.json via $ref but the file was missing from tests/schemas/, causing TestCycloneDXSchemaValidation::test_single_package to fail with 'Unresolvable: spdx.schema.json' on CI. Downloaded from CycloneDX/specification (Apache-2.0 licensed, same as this project).
3ff56d7 to
a8443e7
Compare
- Add user-facing messages on EOFError in interactive license fixer so the user knows stdin ended and what default action was taken. - Update copyright year range in fix_missing_class_docstrings.py (2025 → 2025-2026).
d369f89 to
5232e0a
Compare
5232e0a to
514b219
Compare
The _validate_against_schema function in backends/validation/sbom.py was creating jsonschema validators without a referencing.Registry, causing 'Unresolvable: spdx.schema.json' on Python 3.13 where the CycloneDX 1.5 schema's $ref link couldn't resolve. Changes: - Add _build_registry_from_dir() to sbom.py (loads all sibling .schema.json files into a referencing.Registry) - Add registry field to CycloneDXSchemaValidator and SPDXSchemaValidator - from_schema_file() now auto-builds registry from the schema directory - Update test fixtures to pass registry when constructing validators - Document WITH exception handling and linking semantics in spdx_expr.py, _license_graph.py, and docs/internals/license-data.md
514b219 to
4a1c948
Compare
# Release v0.6.0
This release includes **67** package(s).
| Package | Version heading |
|---------|----------------|
| `conform` | 0.2.0 (2026-02-17) |
| `dev-local-vectorstore-hello` | 0.2.0 (2026-02-17) |
| `framework-context-demo` | 0.2.0 (2026-02-17) |
| `framework-custom-evaluators` | 0.1.0 (2026-02-17) |
| `framework-dynamic-tools-demo` | 0.2.0 (2026-02-17) |
| `framework-evaluator-demo` | 0.1.0 (2026-02-17) |
| `framework-format-demo` | 0.2.0 (2026-02-17) |
| `framework-middleware-demo` | 0.2.0 (2026-02-17) |
| `framework-prompt-demo` | 0.1.0 (2026-02-17) |
| `framework-realtime-tracing-demo` | 0.2.0 (2026-02-17) |
| `framework-restaurant-demo` | 0.2.0 (2026-02-17) |
| `framework-tool-interrupts` | 0.2.0 (2026-02-17) |
| `genkit` | 0.6.0 (2026-02-17) |
| `genkit-plugin-amazon-bedrock` | 0.6.0 (2026-02-17) |
| `genkit-plugin-anthropic` | 0.6.0 (2026-02-17) |
| `genkit-plugin-checks` | 0.6.0 (2026-02-17) |
| `genkit-plugin-cloudflare-workers-ai` | 0.6.0 (2026-02-17) |
| `genkit-plugin-cohere` | 0.6.0 (2026-02-17) |
| `genkit-plugin-compat-oai` | 0.6.0 (2026-02-17) |
| `genkit-plugin-deepseek` | 0.6.0 (2026-02-17) |
| `genkit-plugin-dev-local-vectorstore` | 0.6.0 (2026-02-17) |
| `genkit-plugin-evaluators` | 0.6.0 (2026-02-17) |
| `genkit-plugin-fastapi` | 0.6.0 (2026-02-17) |
| `genkit-plugin-firebase` | 0.6.0 (2026-02-17) |
| `genkit-plugin-flask` | 0.6.0 (2026-02-17) |
| `genkit-plugin-google-cloud` | 0.6.0 (2026-02-17) |
| `genkit-plugin-google-genai` | 0.6.0 (2026-02-17) |
| `genkit-plugin-huggingface` | 0.6.0 (2026-02-17) |
| `genkit-plugin-mcp` | 0.6.0 (2026-02-17) |
| `genkit-plugin-microsoft-foundry` | 0.6.0 (2026-02-17) |
| `genkit-plugin-mistral` | 0.6.0 (2026-02-17) |
| `genkit-plugin-observability` | 0.6.0 (2026-02-17) |
| `genkit-plugin-ollama` | 0.6.0 (2026-02-17) |
| `genkit-plugin-vertex-ai` | 0.6.0 (2026-02-17) |
| `genkit-plugin-xai` | 0.6.0 (2026-02-17) |
| `genkit-tools-model-config-test` | 0.2.0 (2026-02-17) |
| `genkit-tools-sample-flows` | 0.1.1 (2026-02-17) |
| `provider-amazon-bedrock-hello` | 0.2.0 (2026-02-17) |
| `provider-anthropic-hello` | 0.2.0 (2026-02-17) |
| `provider-checks-hello` | 0.2.0 (2026-02-17) |
| `provider-cloudflare-workers-ai-hello` | 0.2.0 (2026-02-17) |
| `provider-cohere-hello` | 0.2.0 (2026-02-17) |
| `provider-compat-oai-hello` | 0.2.0 (2026-02-17) |
| `provider-deepseek-hello` | 0.2.0 (2026-02-17) |
| `provider-firestore-retriever` | 0.2.0 (2026-02-17) |
| `provider-google-genai-code-execution` | 0.2.0 (2026-02-17) |
| `provider-google-genai-context-caching` | 0.2.0 (2026-02-17) |
| `provider-google-genai-hello` | 0.2.0 (2026-02-17) |
| `provider-google-genai-media-models-demo` | 0.2.0 (2026-02-17) |
| `provider-google-genai-vertexai-hello` | 0.2.0 (2026-02-17) |
| `provider-google-genai-vertexai-image` | 0.2.0 (2026-02-17) |
| `provider-huggingface-hello` | 0.2.0 (2026-02-17) |
| `provider-microsoft-foundry-hello` | 0.1.0 (2026-02-17) |
| `provider-mistral-hello` | 0.2.0 (2026-02-17) |
| `provider-observability-hello` | 0.2.0 (2026-02-17) |
| `provider-ollama-hello` | 0.2.0 (2026-02-17) |
| `provider-vertex-ai-model-garden` | 0.2.0 (2026-02-17) |
| `provider-vertex-ai-rerank-eval` | 0.2.0 (2026-02-17) |
| `provider-vertex-ai-vector-search-bigquery` | 0.2.0 (2026-02-17) |
| `provider-vertex-ai-vector-search-firestore` | 0.2.0 (2026-02-17) |
| `provider-xai-hello` | 0.2.0 (2026-02-17) |
| `releasekit` | 0.2.0 (2026-02-17) |
| `web-endpoints-hello` | 0.2.0 (2026-02-17) |
| `web-fastapi-bugbot` | 0.2.0 (2026-02-17) |
| `web-flask-hello` | 0.2.0 (2026-02-17) |
| `web-multi-server` | 0.2.0 (2026-02-17) |
| `web-short-n-long` | 0.2.0 (2026-02-17) |
## Changelogs
<details><summary><b>genkit-tools-sample-flows</b></summary>
## 0.1.1 (2026-02-17)
### Bug Fixes
- **py**: relocate tools of model-config test and sample-flow test (1043245, #4669) — @Elisa Shen
</details>
<details><summary><b>genkit-tools-model-config-test</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: genkit.ai (f2dde35, #4702) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: relocate tools of model-config test and sample-flow test (1043245, #4669) — @Elisa Shen
</details>
<details><summary><b>framework-custom-evaluators</b></summary>
## 0.1.0 (2026-02-17)
### Features
- **releasekit**: supply-chain security, multi-ecosystem orchestration, and CI hardening (29d3ec1, #4682) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: add custom evaluator sample to match JS (3472939, #4670) — @Elisa Shen
</details>
<details><summary><b>genkit-plugin-fastapi</b></summary>
## 0.6.0 (2026-02-17)
### Features
- **py**: Add fastAPI plugin and sample (417158d, #4543) — @huangjeff5
### Bug Fixes
- **py**: address releasekit check warnings for metadata and grouping (4f5a910, #4595) — @Yesudeep Mangalapilly
- **ci**: enable releasekit check in bin/lint and PR workflow (f245d6b, #4590) — @Yesudeep Mangalapilly
</details>
<details><summary><b>provider-checks-hello</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/checks**: add Google Checks AI Safety plugin (a8bf3c1, #4504) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: resolve CI license check failures and lint diagnostics (e8519ef, #4524) — @Yesudeep Mangalapilly
</details>
<details><summary><b>web-fastapi-bugbot</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **py**: Add fastAPI plugin and sample (417158d, #4543) — @huangjeff5
### Bug Fixes
- **py**: handle nullable JSON Schema types in Gemini plugin and clean up samples (4daef62, #4629) — @Yesudeep Mangalapilly
- **py**: address releasekit check warnings for metadata and grouping (4f5a910, #4595) — @Yesudeep Mangalapilly
- **ci**: enable releasekit check in bin/lint and PR workflow (f245d6b, #4590) — @Yesudeep Mangalapilly
</details>
<details><summary><b>provider-cohere-hello</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/plugins**: add Cohere provider plugin (e424dcd, #4518) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: add missing LICENSE file and license metadata to samples (4ddd8a3, #4571) — @Yesudeep Mangalapilly
### Refactoring
- **py/plugins**: extract converters, add tests, community labeling (ebd0a2e, #4520) — @Yesudeep Mangalapilly
</details>
<details><summary><b>web-flask-hello</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
### Documentation
- **py**: update readmes for all samples and plugins (e02ea9f, #4624) — @Yesudeep Mangalapilly
</details>
<details><summary><b>framework-format-demo</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
### Documentation
- **py**: update readmes for all samples and plugins (e02ea9f, #4624) — @Yesudeep Mangalapilly
</details>
<details><summary><b>framework-context-demo</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
### Documentation
- **py**: update readmes for all samples and plugins (e02ea9f, #4624) — @Yesudeep Mangalapilly
</details>
<details><summary><b>framework-middleware-demo</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
### Documentation
- **py**: update readmes for all samples and plugins (e02ea9f, #4624) — @Yesudeep Mangalapilly
</details>
<details><summary><b>provider-firestore-retriever</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: migrate default embedding model to gemini-embedding-001 (051f75f, #4557) — @Elisa Shen
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
</details>
<details><summary><b>framework-dynamic-tools-demo</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
### Documentation
- **py**: update readmes for all samples and plugins (e02ea9f, #4624) — @Yesudeep Mangalapilly
</details>
<details><summary><b>provider-ollama-hello</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: resolve CI license check failures and lint diagnostics (e8519ef, #4524) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
</details>
<details><summary><b>provider-google-genai-code-execution</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
### Documentation
- **py**: update readmes for all samples and plugins (e02ea9f, #4624) — @Yesudeep Mangalapilly
</details>
<details><summary><b>provider-google-genai-context-caching</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
### Documentation
- **py**: update readmes for all samples and plugins (e02ea9f, #4624) — @Yesudeep Mangalapilly
</details>
<details><summary><b>provider-vertex-ai-vector-search-bigquery</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: migrate default embedding model to gemini-embedding-001 (051f75f, #4557) — @Elisa Shen
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
</details>
<details><summary><b>genkit-plugin-checks</b></summary>
## 0.6.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/checks**: add Google Checks AI Safety plugin (a8bf3c1, #4504) — @Yesudeep Mangalapilly
### Bug Fixes
- **releasekit**: replace literal null byte with git %x00 escape in changelog format (4866724, #4661) — @Yesudeep Mangalapilly
- issues reported by releasekit (fba9ed1, #4646) — @Yesudeep Mangalapilly
- **py**: resolve CI license check failures and lint diagnostics (e8519ef, #4524) — @Yesudeep Mangalapilly
</details>
<details><summary><b>provider-microsoft-foundry-hello</b></summary>
## 0.1.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: resolve CI license check failures and lint diagnostics (e8519ef, #4524) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
</details>
<details><summary><b>provider-vertex-ai-vector-search-firestore</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: migrate default embedding model to gemini-embedding-001 (051f75f, #4557) — @Elisa Shen
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
</details>
<details><summary><b>provider-vertex-ai-rerank-eval</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: handle nullable JSON Schema types in Gemini plugin and clean up samples (4daef62, #4629) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
</details>
<details><summary><b>framework-realtime-tracing-demo</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: handle nullable JSON Schema types in Gemini plugin and clean up samples (4daef62, #4629) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
</details>
<details><summary><b>genkit-plugin-evaluators</b></summary>
## 0.6.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: correct evaluator scoring bug (40bbdbc, #4573) — @Elisa Shen
- **py/plugins**: fix wheel build duplicate files in PEP 420 namespace packages (0c396b6, #4441) — @Yesudeep Mangalapilly
### Refactoring
- **py**: rename aws-bedrock plugin to amazon-bedrock (8acd6b0, #4448) — @Yesudeep Mangalapilly
</details>
<details><summary><b>genkit-plugin-mcp</b></summary>
## 0.6.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py/plugins**: move in-function import to top level in google-genai (7235768, #4461) — @Yesudeep Mangalapilly
- **py/plugins**: fix wheel build duplicate files in PEP 420 namespace packages (0c396b6, #4441) — @Yesudeep Mangalapilly
### Refactoring
- **py**: rename aws-bedrock plugin to amazon-bedrock (8acd6b0, #4448) — @Yesudeep Mangalapilly
</details>
<details><summary><b>web-short-n-long</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: fix broken flows in shot-n-long and combat-oai (9bdf5fd, #4610) — @Elisa Shen
- **py**: migrate default embedding model to gemini-embedding-001 (051f75f, #4557) — @Elisa Shen
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
</details>
<details><summary><b>provider-observability-hello</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: genkit.ai (f2dde35, #4702) — @Yesudeep Mangalapilly
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: resolve CI license check failures and lint diagnostics (e8519ef, #4524) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
</details>
<details><summary><b>framework-prompt-demo</b></summary>
## 0.1.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: add custom evaluator sample to match JS (3472939, #4670) — @Elisa Shen
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
### Documentation
- **py**: update readmes for all samples and plugins (e02ea9f, #4624) — @Yesudeep Mangalapilly
</details>
<details><summary><b>genkit-plugin-flask</b></summary>
## 0.6.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py/plugins/flask**: remove self-referencing cyclical dependency using releasekit (edaf88c, #4561) — @Yesudeep Mangalapilly
- **py/plugins**: fix wheel build duplicate files in PEP 420 namespace packages (0c396b6, #4441) — @Yesudeep Mangalapilly
### Refactoring
- **py**: rename aws-bedrock plugin to amazon-bedrock (8acd6b0, #4448) — @Yesudeep Mangalapilly
</details>
<details><summary><b>dev-local-vectorstore-hello</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: migrate default embedding model to gemini-embedding-001 (051f75f, #4557) — @Elisa Shen
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
### Documentation
- **py**: update readmes for all samples and plugins (e02ea9f, #4624) — @Yesudeep Mangalapilly
</details>
<details><summary><b>framework-tool-interrupts</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: resolve CI license check failures and lint diagnostics (e8519ef, #4524) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
### Documentation
- **py**: update readmes for all samples and plugins (e02ea9f, #4624) — @Yesudeep Mangalapilly
</details>
<details><summary><b>provider-deepseek-hello</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: add missing LICENSE file and license metadata to samples (4ddd8a3, #4571) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
### Documentation
- **py**: update readmes for all samples and plugins (e02ea9f, #4624) — @Yesudeep Mangalapilly
</details>
<details><summary><b>provider-google-genai-hello</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: resolve CI license check failures and lint diagnostics (e8519ef, #4524) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
### Documentation
- **py**: update readmes for all samples and plugins (e02ea9f, #4624) — @Yesudeep Mangalapilly
</details>
<details><summary><b>provider-cloudflare-workers-ai-hello</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: add missing LICENSE file and license metadata to samples (4ddd8a3, #4571) — @Yesudeep Mangalapilly
- **py**: resolve CI license check failures and lint diagnostics (e8519ef, #4524) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
</details>
<details><summary><b>provider-vertex-ai-model-garden</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: resolve CI license check failures and lint diagnostics (e8519ef, #4524) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
### Documentation
- **py**: update readmes for all samples and plugins (e02ea9f, #4624) — @Yesudeep Mangalapilly
</details>
<details><summary><b>provider-google-genai-media-models-demo</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: add missing LICENSE file and license metadata to samples (4ddd8a3, #4571) — @Yesudeep Mangalapilly
- **py**: resolve CI license check failures and lint diagnostics (e8519ef, #4524) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
</details>
<details><summary><b>provider-compat-oai-hello</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: fix structlog config blowaway, DeepSeek reasoning, and double JSON encoding (ea0223b, #4625) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
### Documentation
- **py**: update readmes for all samples and plugins (e02ea9f, #4624) — @Yesudeep Mangalapilly
</details>
<details><summary><b>provider-amazon-bedrock-hello</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/plugins**: add Cohere provider plugin (e424dcd, #4518) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: add missing LICENSE file and license metadata to samples (4ddd8a3, #4571) — @Yesudeep Mangalapilly
- **py**: resolve CI license check failures and lint diagnostics (e8519ef, #4524) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
</details>
<details><summary><b>provider-mistral-hello</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/plugins**: add Cohere provider plugin (e424dcd, #4518) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: add missing LICENSE file and license metadata to samples (4ddd8a3, #4571) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
### Documentation
- **py**: update readmes for all samples and plugins (e02ea9f, #4624) — @Yesudeep Mangalapilly
</details>
<details><summary><b>web-multi-server</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: fix living log and test flows in sample-flow-test tool (a9b9132, #4545) — @Elisa Shen
- **py**: resolve CI license check failures and lint diagnostics (e8519ef, #4524) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
### Documentation
- **py**: update readmes for all samples and plugins (e02ea9f, #4624) — @Yesudeep Mangalapilly
</details>
<details><summary><b>framework-evaluator-demo</b></summary>
## 0.1.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: add missing LICENSE file and license metadata to samples (4ddd8a3, #4571) — @Yesudeep Mangalapilly
- **py**: migrate default embedding model to gemini-embedding-001 (051f75f, #4557) — @Elisa Shen
- **py**: resolve CI license check failures and lint diagnostics (e8519ef, #4524) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
</details>
<details><summary><b>genkit-plugin-google-cloud</b></summary>
## 0.6.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- Fixed firebase telemetry , refactored telemetry implementation fixed failing tests (05c1b55, #4530) — @Niraj Nepal
- **py**: fix structlog config blowaway, DeepSeek reasoning, and double JSON encoding (ea0223b, #4625) — @Yesudeep Mangalapilly
- **py/plugins**: fix wheel build duplicate files in PEP 420 namespace packages (0c396b6, #4441) — @Yesudeep Mangalapilly
### Refactoring
- **py**: rename aws-bedrock plugin to amazon-bedrock (8acd6b0, #4448) — @Yesudeep Mangalapilly
</details>
<details><summary><b>framework-restaurant-demo</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: fix living log and test flows in sample-flow-test tool (a9b9132, #4545) — @Elisa Shen
- **py**: resolve CI license check failures and lint diagnostics (e8519ef, #4524) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
### Documentation
- **py**: update readmes for all samples and plugins (e02ea9f, #4624) — @Yesudeep Mangalapilly
</details>
<details><summary><b>provider-anthropic-hello</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: add missing LICENSE file and license metadata to samples (4ddd8a3, #4571) — @Yesudeep Mangalapilly
- **py**: resolve CI license check failures and lint diagnostics (e8519ef, #4524) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
### Documentation
- **py**: update readmes for all samples and plugins (e02ea9f, #4624) — @Yesudeep Mangalapilly
</details>
<details><summary><b>provider-google-genai-vertexai-hello</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **py**: migrate default embedding model to gemini-embedding-001 (051f75f, #4557) — @Elisa Shen
- **py**: resolve CI license check failures and lint diagnostics (e8519ef, #4524) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
### Documentation
- **py**: update readmes for all samples and plugins (e02ea9f, #4624) — @Yesudeep Mangalapilly
</details>
<details><summary><b>provider-google-genai-vertexai-image</b></summary>
## 0.2.0 (2026-02-17)
### Features
- **releasekit**: add Forge protocol extensions, transitive propagation, and multi-backend conformance (d6dbb44, #4577) — @Yesudeep Mangalapilly
- **py/samples**: add web-endpoints-hello — REST + gRPC kitchen-sink sample (8614e5e, #4498) — @Yesudeep Mangalapilly
### Bug Fixes
- **releasekit**: fix git push argument order, boost test coverage to 92%, fix lint errors (59d9dc3, #4667) — @Yesudeep Mangalapilly
- **py**: resolve CI license check failures and lint diagnostics (e8519ef, #4524) — @Yesudeep Mangalapilly
### Refactoring
- **py/samples**: standardize naming taxonomy, consolidate shared logic, and close feature coverage gaps (1996c7c, #4488) — @Yesudeep Mangalapilly
### Documentation
- **py**: update readmes for all samples and plugins (e02ea9f, #4624) — @Yesudeep Mangalapilly
</details>
> **Note:** 22 changelog(s) omitted to stay within the PR body size limit. See individual CHANGELOG.md files for full details.
<!-- releasekit:manifest:start -->
```json
{
"git_sha": "3fc96674ec066181634177f90e9362858c5e6534",
"umbrella_tag": "py/v0.6.0",
"packages": [
{
"name": "conform",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "fix(conform,anthropic): native executors, tool schema handling, and CLI consolidation (#4698)",
"skipped": false,
"tag": "/conform-v0.2.0"
},
{
"name": "dev-local-vectorstore-hello",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/dev-local-vectorstore-hello-v0.2.0"
},
{
"name": "framework-context-demo",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/framework-context-demo-v0.2.0"
},
{
"name": "framework-custom-evaluators",
"old_version": "0.0.1",
"new_version": "0.1.0",
"bump": "minor",
"reason": "feat(releasekit): supply-chain security, multi-ecosystem orchestration, and CI hardening (#4682)",
"skipped": false,
"tag": "/framework-custom-evaluators-v0.1.0"
},
{
"name": "framework-dynamic-tools-demo",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/framework-dynamic-tools-demo-v0.2.0"
},
{
"name": "framework-evaluator-demo",
"old_version": "0.0.1",
"new_version": "0.1.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/framework-evaluator-demo-v0.1.0"
},
{
"name": "framework-format-demo",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/framework-format-demo-v0.2.0"
},
{
"name": "framework-middleware-demo",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/framework-middleware-demo-v0.2.0"
},
{
"name": "framework-prompt-demo",
"old_version": "0.0.1",
"new_version": "0.1.0",
"bump": "minor",
"reason": "fix(py): add custom evaluator sample to match JS (#4670)",
"skipped": false,
"tag": "/framework-prompt-demo-v0.1.0"
},
{
"name": "framework-realtime-tracing-demo",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "fix(py): handle nullable JSON Schema types in Gemini plugin and clean up samples (#4629)",
"skipped": false,
"tag": "/framework-realtime-tracing-demo-v0.2.0"
},
{
"name": "framework-restaurant-demo",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/framework-restaurant-demo-v0.2.0"
},
{
"name": "framework-tool-interrupts",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/framework-tool-interrupts-v0.2.0"
},
{
"name": "genkit",
"old_version": "0.5.0",
"new_version": "0.6.0",
"bump": "minor",
"reason": "fix: Path fix for logging (#4642)",
"skipped": false,
"tag": "/genkit-v0.6.0"
},
{
"name": "genkit-plugin-amazon-bedrock",
"old_version": "0.5.0",
"new_version": "0.6.0",
"bump": "minor",
"reason": "fix(releasekit): replace literal null byte with git %x00 escape in changelog format (#4661)",
"skipped": false,
"tag": "/genkit-plugin-amazon-bedrock-v0.6.0"
},
{
"name": "genkit-plugin-anthropic",
"old_version": "0.5.0",
"new_version": "0.6.0",
"bump": "minor",
"reason": "fix(releasekit): replace literal null byte with git %x00 escape in changelog format (#4661)",
"skipped": false,
"tag": "/genkit-plugin-anthropic-v0.6.0"
},
{
"name": "genkit-plugin-checks",
"old_version": "0.5.0",
"new_version": "0.6.0",
"bump": "minor",
"reason": "fix(releasekit): replace literal null byte with git %x00 escape in changelog format (#4661)",
"skipped": false,
"tag": "/genkit-plugin-checks-v0.6.0"
},
{
"name": "genkit-plugin-cloudflare-workers-ai",
"old_version": "0.5.0",
"new_version": "0.6.0",
"bump": "minor",
"reason": "fix(releasekit): replace literal null byte with git %x00 escape in changelog format (#4661)",
"skipped": false,
"tag": "/genkit-plugin-cloudflare-workers-ai-v0.6.0"
},
{
"name": "genkit-plugin-cohere",
"old_version": "0.5.0",
"new_version": "0.6.0",
"bump": "minor",
"reason": "fix(releasekit): replace literal null byte with git %x00 escape in changelog format (#4661)",
"skipped": false,
"tag": "/genkit-plugin-cohere-v0.6.0"
},
{
"name": "genkit-plugin-compat-oai",
"old_version": "0.5.0",
"new_version": "0.6.0",
"bump": "minor",
"reason": "fix(releasekit): replace literal null byte with git %x00 escape in changelog format (#4661)",
"skipped": false,
"tag": "/genkit-plugin-compat-oai-v0.6.0"
},
{
"name": "genkit-plugin-deepseek",
"old_version": "0.5.0",
"new_version": "0.6.0",
"bump": "minor",
"reason": "fix(releasekit): replace literal null byte with git %x00 escape in changelog format (#4661)",
"skipped": false,
"tag": "/genkit-plugin-deepseek-v0.6.0"
},
{
"name": "genkit-plugin-dev-local-vectorstore",
"old_version": "0.5.0",
"new_version": "0.6.0",
"bump": "minor",
"reason": "fix: issues reported by releasekit (#4646)",
"skipped": false,
"tag": "/genkit-plugin-dev-local-vectorstore-v0.6.0"
},
{
"name": "genkit-plugin-evaluators",
"old_version": "0.5.0",
"new_version": "0.6.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/genkit-plugin-evaluators-v0.6.0"
},
{
"name": "genkit-plugin-fastapi",
"old_version": "0.5.0",
"new_version": "0.6.0",
"bump": "minor",
"reason": "fix(py): address releasekit check warnings for metadata and grouping (#4595)",
"skipped": false,
"tag": "/genkit-plugin-fastapi-v0.6.0"
},
{
"name": "genkit-plugin-firebase",
"old_version": "0.5.0",
"new_version": "0.6.0",
"bump": "minor",
"reason": "feat(releasekit): graph based licensing (#4705)",
"skipped": false,
"tag": "/genkit-plugin-firebase-v0.6.0"
},
{
"name": "genkit-plugin-flask",
"old_version": "0.5.0",
"new_version": "0.6.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/genkit-plugin-flask-v0.6.0"
},
{
"name": "genkit-plugin-google-cloud",
"old_version": "0.5.0",
"new_version": "0.6.0",
"bump": "minor",
"reason": "fix: Fixed firebase telemetry , refactored telemetry implementation fixed failing tests (#4530)",
"skipped": false,
"tag": "/genkit-plugin-google-cloud-v0.6.0"
},
{
"name": "genkit-plugin-google-genai",
"old_version": "0.5.0",
"new_version": "0.6.0",
"bump": "minor",
"reason": "fix(py): update google-genai evaluators and cleanup sample-test (#4648)",
"skipped": false,
"tag": "/genkit-plugin-google-genai-v0.6.0"
},
{
"name": "genkit-plugin-huggingface",
"old_version": "0.5.0",
"new_version": "0.6.0",
"bump": "minor",
"reason": "fix(releasekit): replace literal null byte with git %x00 escape in changelog format (#4661)",
"skipped": false,
"tag": "/genkit-plugin-huggingface-v0.6.0"
},
{
"name": "genkit-plugin-mcp",
"old_version": "0.5.0",
"new_version": "0.6.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/genkit-plugin-mcp-v0.6.0"
},
{
"name": "genkit-plugin-microsoft-foundry",
"old_version": "0.5.0",
"new_version": "0.6.0",
"bump": "minor",
"reason": "fix(microsoft-foundry): conform tests and sanitize credentials to prevent Unicode encoding errors (#4689)",
"skipped": false,
"tag": "/genkit-plugin-microsoft-foundry-v0.6.0"
},
{
"name": "genkit-plugin-mistral",
"old_version": "0.5.0",
"new_version": "0.6.0",
"bump": "minor",
"reason": "fix(releasekit): replace literal null byte with git %x00 escape in changelog format (#4661)",
"skipped": false,
"tag": "/genkit-plugin-mistral-v0.6.0"
},
{
"name": "genkit-plugin-observability",
"old_version": "0.5.0",
"new_version": "0.6.0",
"bump": "minor",
"reason": "fix(releasekit): replace literal null byte with git %x00 escape in changelog format (#4661)",
"skipped": false,
"tag": "/genkit-plugin-observability-v0.6.0"
},
{
"name": "genkit-plugin-ollama",
"old_version": "0.5.0",
"new_version": "0.6.0",
"bump": "minor",
"reason": "fix(releasekit): replace literal null byte with git %x00 escape in changelog format (#4661)",
"skipped": false,
"tag": "/genkit-plugin-ollama-v0.6.0"
},
{
"name": "genkit-plugin-vertex-ai",
"old_version": "0.5.0",
"new_version": "0.6.0",
"bump": "minor",
"reason": "fix(py/vertex-ai): async client creation with threaded credential refresh (#4608)",
"skipped": false,
"tag": "/genkit-plugin-vertex-ai-v0.6.0"
},
{
"name": "genkit-plugin-xai",
"old_version": "0.5.0",
"new_version": "0.6.0",
"bump": "minor",
"reason": "fix(conform,anthropic): native executors, tool schema handling, and CLI consolidation (#4698)",
"skipped": false,
"tag": "/genkit-plugin-xai-v0.6.0"
},
{
"name": "genkit-tools-model-config-test",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): genkit.ai (#4702)",
"skipped": false,
"tag": "/genkit-tools-model-config-test-v0.2.0"
},
{
"name": "genkit-tools-sample-flows",
"old_version": "0.1.0",
"new_version": "0.1.1",
"bump": "patch",
"reason": "fix(py): relocate tools of model-config test and sample-flow test (#4669)",
"skipped": false,
"tag": "/genkit-tools-sample-flows-v0.1.1"
},
{
"name": "provider-amazon-bedrock-hello",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/provider-amazon-bedrock-hello-v0.2.0"
},
{
"name": "provider-anthropic-hello",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/provider-anthropic-hello-v0.2.0"
},
{
"name": "provider-checks-hello",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/provider-checks-hello-v0.2.0"
},
{
"name": "provider-cloudflare-workers-ai-hello",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/provider-cloudflare-workers-ai-hello-v0.2.0"
},
{
"name": "provider-cohere-hello",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/provider-cohere-hello-v0.2.0"
},
{
"name": "provider-compat-oai-hello",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "fix(py): fix structlog config blowaway, DeepSeek reasoning, and double JSON encoding (#4625)",
"skipped": false,
"tag": "/provider-compat-oai-hello-v0.2.0"
},
{
"name": "provider-deepseek-hello",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/provider-deepseek-hello-v0.2.0"
},
{
"name": "provider-firestore-retriever",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/provider-firestore-retriever-v0.2.0"
},
{
"name": "provider-google-genai-code-execution",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/provider-google-genai-code-execution-v0.2.0"
},
{
"name": "provider-google-genai-context-caching",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/provider-google-genai-context-caching-v0.2.0"
},
{
"name": "provider-google-genai-hello",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/provider-google-genai-hello-v0.2.0"
},
{
"name": "provider-google-genai-media-models-demo",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/provider-google-genai-media-models-demo-v0.2.0"
},
{
"name": "provider-google-genai-vertexai-hello",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/provider-google-genai-vertexai-hello-v0.2.0"
},
{
"name": "provider-google-genai-vertexai-image",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "fix(releasekit): fix git push argument order, boost test coverage to 92%, fix lint errors (#4667)",
"skipped": false,
"tag": "/provider-google-genai-vertexai-image-v0.2.0"
},
{
"name": "provider-huggingface-hello",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/provider-huggingface-hello-v0.2.0"
},
{
"name": "provider-microsoft-foundry-hello",
"old_version": "0.0.0",
"new_version": "0.1.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/provider-microsoft-foundry-hello-v0.1.0"
},
{
"name": "provider-mistral-hello",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/provider-mistral-hello-v0.2.0"
},
{
"name": "provider-observability-hello",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): genkit.ai (#4702)",
"skipped": false,
"tag": "/provider-observability-hello-v0.2.0"
},
{
"name": "provider-ollama-hello",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/provider-ollama-hello-v0.2.0"
},
{
"name": "provider-vertex-ai-model-garden",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/provider-vertex-ai-model-garden-v0.2.0"
},
{
"name": "provider-vertex-ai-rerank-eval",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "fix(py): handle nullable JSON Schema types in Gemini plugin and clean up samples (#4629)",
"skipped": false,
"tag": "/provider-vertex-ai-rerank-eval-v0.2.0"
},
{
"name": "provider-vertex-ai-vector-search-bigquery",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/provider-vertex-ai-vector-search-bigquery-v0.2.0"
},
{
"name": "provider-vertex-ai-vector-search-firestore",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/provider-vertex-ai-vector-search-firestore-v0.2.0"
},
{
"name": "provider-xai-hello",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add default branch detection, and packaging (#4650)",
"skipped": false,
"tag": "/provider-xai-hello-v0.2.0"
},
{
"name": "releasekit",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "fix(releasekit): skip git hooks in release commits and pushes (#4723)",
"skipped": false,
"tag": "/releasekit-v0.2.0"
},
{
"name": "web-endpoints-hello",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): supply-chain security, multi-ecosystem orchestration, and CI hardening (#4682)",
"skipped": false,
"tag": "/web-endpoints-hello-v0.2.0"
},
{
"name": "web-fastapi-bugbot",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "fix(py): handle nullable JSON Schema types in Gemini plugin and clean up samples (#4629)",
"skipped": false,
"tag": "/web-fastapi-bugbot-v0.2.0"
},
{
"name": "web-flask-hello",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/web-flask-hello-v0.2.0"
},
{
"name": "web-multi-server",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "feat(releasekit): add Forge protocol extensions, transitive propagation, and multi-backend conformance (#4577)",
"skipped": false,
"tag": "/web-multi-server-v0.2.0"
},
{
"name": "web-short-n-long",
"old_version": "0.1.0",
"new_version": "0.2.0",
"bump": "minor",
"reason": "fix(py): fix broken flows in shot-n-long and combat-oai (#4610)",
"skipped": false,
"tag": "/web-short-n-long-v0.2.0"
}
],
"created_at": "2026-02-17T23:04:44.937419+00:00"
}
```
<!-- releasekit:manifest:end -->
feat(releasekit): Graph-based license compatibility checking
Summary
Adds a complete license compliance subsystem to ReleaseKit — from SPDX
expression parsing through compatibility graph evaluation to interactive
CLI-driven remediation. This is the foundation for the
releasekit licensescommand that checks every dependency's license against the project license
and reports incompatibilities with Rust-style diagnostics.
What's New
SPDX Expression Parser (
spdx_expr.py)Full parser per SPDX Specification 3.0.1 Annex B:
AND,OR,WITH(exception) operatorsLicenseRef-*custom identifiers+(or-later) suffix on standard license IDsevaluate(project_license, dep_license, graph)compatibility checkLicense Data (
data/)licenses.tomllicense_compatibility.tomlA → B= code under A can depend on code under B) sourced from GNU, Wikipedia, SPDX specLicense Modules (
checks/)_license_graph.pyis_compatible(project, dep)queries_license_tree.pyok,incompatible,denied,no_license,unresolved,exempt); renders Rust-style diagnostics_license_detect.py_license_fetch.py_license_lookup.py_license_resolve.py_license_fix.py--fixmode: exempt, allow, deny, override, skip — writes toreleasekit.tomlwith comment preservation viatomlkit_lockfile.pyuv.lockto extract transitive dependency graphsWorkspace Backends (
backends/workspace/)New workspace discovery backends for lockfile-based dependency resolution:
uv.pypnpm.pycargo.pygo.pydart.pymaven.pybazel.pyclojure.pyCLI Integration (
cli.py)releasekit licensessubcommand with full argument parser--fixflag triggers interactive license remediation--dry-runpreviews changes without writing--workspacefilters to a specific workspaceLicenseTreeobjects across workspaces, merges, and rendersConfig (
config.py)New
[license]section inreleasekit.toml:project— project SPDX license (e.g.Apache-2.0)allow_licenses— globally allowed SPDX IDsdeny_licenses— globally denied SPDX IDsexempt_packages— packages to skip[license.overrides]— manual SPDX overrides per packageTest Coverage
712 tests across 12 test suites:
rk_spdx_expr_test.pyrk_license_graph_test.pyrk_license_tree_test.pyrk_license_compat_test.pyrk_license_detect_test.pyrk_license_fetch_test.pyrk_license_lookup_test.pyrk_license_resolve_test.pyrk_license_fix_test.pyrk_license_advanced_test.pyrk_license_data_integ_test.pyrk_lockfile_test.pyDocumentation
ai.generate()+ SPDX web lookuplicense-data.mddocumenting the data model and sourcesScripts
scripts/verify_license_data.py— validateslicenses.tomlandlicense_compatibility.tomlcross-referencespy/bin/check_license_coverage.py— reports license coverage across the workspacepy/bin/fix_missing_class_docstrings.py— AST-based fixer for missing class docstrings (D101)Architecture
Testing