Expose node groups in the project snapshot
Description
Add the output of Pipeline.group_nodes_by() to the inspection snapshot so plugins, the HTTP server and AI tooling can read a project's deployable units without re-deriving them.
Context
ProjectSnapshot describes pipelines, nodes, datasets and parameters, but not groups. Every deployment plugin except kedro-airflow works out its own node-to-task mapping. A serialisable description of groups is what #3094 called "expressing the groups", and it was agreed as the second core item in https://github.com/kedro-org/kedro/issues/2058#issuecomment-5715275626
Scope
- Add a GroupSnapshot model (name, type, nodes, dependencies) and a groups field on PipelineSnapshot, defaulting to an empty list so existing consumers are unaffected.
- Populate it in
_build_pipeline_snapshotsusing the namespace strategy. - Include each group's boundary inputs and outputs, since that is what a plugin needs to know which datasets must be persisted.
- Confirm GET /snapshot on the HTTP server returns the new field and update
kedro/server/models.pyif needed. - Tests and an update to the inspection docs page.
Open questions:
Whether the snapshot call should accept a grouping strategy argument, in preparation for strategies beyond namespace? Kedro-Viz is moving to the inspection API, so the field shape should be agreed with Viz before release
Source: kedro-org/kedro