Skip to content

I1114 — A provider is an adapter over the model, and adding one is an implementation

Make every provider-specific representation a derived adapter over the repository model, so that supporting another provider is one implementation rather than a copy of the instructions in another file.

BLOCKED wave 6 · p1 · implementation profile · parallel safe

Part of two-folder-integration — A repository that adopts Majordomus gains two directories and two lines, and can give them back.

Blocked. This issue cannot start until I1112 is done. The status is derived from that, not declared.

Objective

Make every provider-specific representation a derived adapter over the repository model, so that supporting another provider is one implementation rather than a copy of the instructions in another file.

Why

Provider files are the fastest-growing part of any repository that works with several assistants, and each copy drifts from the layer it was copied from. The layer is provider-neutral by design; the adapters are where a provider's requirements are allowed to exist.

Current state

Provider bootstraps are generated from the registry, which is the right shape, but they land at the root and their ownership is not recorded.

Desired state

Adapters are generated into the control-plane namespace, bridged at the root only where a tool truly requires a root file, and a new provider is a trait implementation.

Scope

  • apps/majordomus-cli/src/providers.rs
  • .majordomus/generated

Out of scope

  • Provider semantics in the canonical layer
  • A provider list maintained by hand

Dependencies

What waits on this

Acceptance criteria

  • Every provider representation is derived from the model and declares its provenance
  • Adding a provider is one implementation of the adapter contract, with no edit to the layer and no new list
  • A provider that can be configured programmatically produces no repository file at all
  • Where a root file is unavoidable it is a managed bridge with recorded ownership, and its content is derived

Validation

  • majordomus generate --check
  • cargo test --workspace --all-features

Evidence required

  • adapters_derived
  • new_provider_is_one_impl

Evidence

None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.

Risk

An adapter layer can grow provider-shaped holes in the model beneath it. The check is whether the model would still be complete if every adapter were deleted.

Timeline

started
verified
completed

Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.

Canonical record: .ai/repo/project/issues/I1114.yaml. Read it back with majordomus plan show I1114.