Skip to content

[v1.0] Formalize typed extension plugin protocols and compatibility negotiation #193

Description

@codeforester

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

Metadata

Metadata

Assignees

Labels

enhancementNew feature or product improvement

Type

No type

Projects

Status
Done

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions