Pillars ======= These pillars define what belongs in ``vendor-fabric``. Providers Are Data Extensions ----------------------------- Every provider should feel like an extension of ``ExtendedData``, not a separate utility island. Provider inputs and outputs should be promoted into extended containers wherever doing so helps callers transform, redact, export, sync, or inspect results. Capability-Driven Dispatch -------------------------- The fabric should dispatch by capabilities declared by providers. Repeated hardcoded pass-through methods should be avoided when a provider can declare support once and the facade can route generically. Optional Means Discoverable --------------------------- Optional provider dependencies are normal for this package. Missing extras should be visible through registry state and clear install guidance, not through unexpected import failures in ordinary package imports. Sync Is A First-Class Capability -------------------------------- File sync and secret sync are provider capabilities. They should compose ``extended-data`` primitives for redaction, encoding, decoding, and file handling while delegating canonical SecretSync pipeline semantics to the ``jbcom/secrets-sync`` binding facade. Agent Runtime Is Out Of Scope ----------------------------- Agent orchestration, crew discovery, framework selection, and agent runner fixtures belong in ``agentic-fabric``. This package can expose provider-backed capability functions, schemas, and metadata, but it should not own agent runtimes or framework tool factories. Tests Define Provider Contracts ------------------------------- Unit tests, mocked provider tests, optional dependency tests, and opt-in E2E tests are part of the public contract. ``pytest-vendor-fabric`` should make it straightforward for downstream projects to test code built on this package.