Skip to content

docs(spec): change provider merge to overlay_by_provider_id#265

Closed
rhuss wants to merge 1 commit intollamastack:feature/sdd-v1alpha2from
rhuss:002-overlay-provider-merge
Closed

docs(spec): change provider merge to overlay_by_provider_id#265
rhuss wants to merge 1 commit intollamastack:feature/sdd-v1alpha2from
rhuss:002-overlay-provider-merge

Conversation

@rhuss
Copy link
Copy Markdown
Collaborator

@rhuss rhuss commented Mar 11, 2026

Summary

  • Changes the provider merge strategy from replace_by_api_type to overlay_by_provider_id across all spec artifacts
  • Adds FR-035a defining the overlay-by-provider-ID merge semantics
  • Updates contract examples to cover all three behaviors: replace matching IDs, append new user providers, preserve unmatched base providers

Motivation

Raised by @VaishnaviHire in PR #263 review. The previous replace_by_api_type strategy would silently drop base providers (e.g., inline::sentence-transformers for embeddings) when a user only wanted to override a single inference provider. This is especially problematic for custom downstream distributions that ship multiple default providers per API type.

The overlay strategy matches the implementation already merged in PR #253 and avoids breaking changes when layering user config on top of existing distributions.

Files changed

File What changed
contracts/config-generation.yaml Strategy name, description, examples
spec.md Added FR-035a
research.md Updated R3 decision, rationale, summary table
REVIEW.md Updated Decision 3
tasks.md Updated T018, T029 descriptions

Note on code changes

The merge logic (T018) has not been implemented yet, so no code changes are needed. When T018 is implemented, it will follow the updated overlay_by_provider_id contract.

Assisted-By: 🤖 Claude Code

@mergify
Copy link
Copy Markdown

mergify bot commented Mar 11, 2026

This pull request has merge conflicts that must be resolved before it can be merged. @rhuss please rebase it. https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork

@mergify mergify bot added the needs-rebase label Mar 11, 2026
Replace the `replace_by_api_type` provider merge strategy with
`overlay_by_provider_id` across all spec artifacts. The previous
strategy would silently drop base providers that users didn't
explicitly re-declare, breaking distributions that ship multiple
default providers per API type.

The overlay strategy uses provider-ID-based matching: matching IDs
are replaced, unmatched user IDs are appended, and unmatched base
IDs are preserved. This keeps distributions intact when users only
need to override a single provider.

Addresses review feedback from @VaishnaviHire on PR llamastack#263 and aligns
with the merge semantics already implemented in PR llamastack#253.

Changes:
- contracts/config-generation.yaml: strategy + examples
- spec.md: add FR-035a for overlay merge semantics
- research.md: update R3 decision and rationale
- REVIEW.md: update Decision 3
- tasks.md: update T018 and T029 descriptions

Assisted-By: 🤖 Claude Code

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@rhuss rhuss force-pushed the 002-overlay-provider-merge branch from 3de36de to 325ea43 Compare March 11, 2026 06:10
@mergify mergify bot removed the needs-rebase label Mar 11, 2026
- {provider_id: sentence-transformers, provider_type: "inline::sentence-transformers"}
user: [{id: base-inf, provider: ollama, endpoint: "http://ollama:11434"}]
result:
- {provider_id: base-inf, provider_type: "remote::ollama", config: {url: "http://ollama:11434"}}
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Provider url key needs to be base_url rather than url. Example config.yaml

@rhuss rhuss changed the base branch from main to feature/sdd-v1alpha2 March 11, 2026 06:45
@rhuss
Copy link
Copy Markdown
Collaborator Author

rhuss commented Mar 11, 2026

Closing in favor of #266, which includes these spec changes alongside the Phase 1+2 implementation (v1alpha2 types + config generation pipeline).

@rhuss rhuss closed this Mar 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants