Skip to content

Deepen the storage provider extension contract #211

Description

@ian-pascoe

Problem

Provider extension and lifecycle safety still rely on weak seams:

  • coordinator/CLI fallback distinguishes an unregistered provider by matching error message text ("is not registered"); a registered factory throwing the same text can be silently replaced by a built-in;
  • lifecycle restore/migration needs target namespace and logical schema identity, but WritableAuthority does not require both metadata fields, forcing casts/fallbacks for alternate providers.

Acceptance criteria

  • Factory lookup exposes a typed registry-miss result/error and never inspects human error messages.
  • CLI and coordinator share one fallback helper.
  • WritableAuthority requires target namespace and schema version (or a required typed lifecycle identity capability) for every registered provider.
  • Alternate-provider contract tests prove factory failures propagate and lifecycle identity mismatches fail closed.

Evidence

Review anchors: packages/core/src/storage/coordinator.ts around provider fallback (~619) and packages/core/src/storage/backup.ts around target identity (~176).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions