Goal
Make third-party extensions safe to build, version, test, and evolve against a documented plugin SDK.
Background
Entry-point extensions and lifecycle hooks matter for adoption, but without typed protocols, capability metadata, and negotiation, plugins must rely on internals.
Scope
Define public protocols for each extension group; publish API version and capabilities; add compatibility negotiation and actionable rejection errors; provide a fixture plugin/test harness and collision/disable behavior; document stability and deprecation.
Acceptance Criteria
- Every extension group has a typed contract and fixture.
- Incompatible versions are rejected before execution.
- Capability discovery is deterministic.
- Lazy loading, allowlists, and collision handling remain intact.
Validation
Build/install a fixture plugin wheel; test compatible, incompatible, disabled, and colliding plugins; type-check public protocols and run the full suite.
Non-Goals
Do not expose private implementation modules as a substitute for a supported SDK.
Project Fields
- Status: Backlog
- Priority: P1
- Area: Python
- Initiative: v1.0 Readiness
- Size: M
Ownership
Goal
Make third-party extensions safe to build, version, test, and evolve against a documented plugin SDK.
Background
Entry-point extensions and lifecycle hooks matter for adoption, but without typed protocols, capability metadata, and negotiation, plugins must rely on internals.
Scope
Define public protocols for each extension group; publish API version and capabilities; add compatibility negotiation and actionable rejection errors; provide a fixture plugin/test harness and collision/disable behavior; document stability and deprecation.
Acceptance Criteria
Validation
Build/install a fixture plugin wheel; test compatible, incompatible, disabled, and colliding plugins; type-check public protocols and run the full suite.
Non-Goals
Do not expose private implementation modules as a substitute for a supported SDK.
Project Fields
Ownership