Problem
Extensions need to interoperate without explicit dependency graphs. The journalism plugin needs "claimable" behavior, the software plugin needs "evidence-linked" behavior for QA, but hard dependencies between extensions create a brittle ecosystem.
Solution
Structural subtyping via protocols, modeled on Python's `typing.Protocol`. Types satisfy protocols implicitly by having the right fields, hooks, and tools. Extensions declare `requires_protocols` and `provides_protocols` instead of depending on specific other extensions.
See extension-type-protocols design doc for full details.
Key Design Decisions
Three phases:
1. Protocol definition format [S]: `protocol` entry type, core protocols as KB entries, `pyrite protocol list/show` 2. Structural satisfaction checking [M]: `pyrite protocol check`, extension manifest requires/provides, install-time validation 3. Registry integration [M]: Protocol search in extension registry, agent-driven discovery
Prerequisites
Success Criteria
Launch Context
Phase 1 (protocol definitions) can ship with 0.8 as documentation. Phase 2 (checking) is post-launch. Phase 3 (registry integration) ships with the extension registry. The protocol system is the long-term answer to extension interoperability — it doesn't need to be fully automated at launch, but the design should be visible.