Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -202,3 +202,6 @@ local-run.yaml
.sisyphus/
# Per-developer feature design overrides (see docs/contributing/feature-design.config)
.feature-design.config.local

# Generated at e2e test time by the unified-mode --migrate-config step
tests/e2e/configuration/unified-mode/**/lightspeed-stack-unified-migrated.yaml
46 changes: 46 additions & 0 deletions tests/e2e/configuration/library-mode/lightspeed-stack-legacy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Lightspeed Core Service (LCS)
service:
host: 0.0.0.0
port: 8080
auth_enabled: false
workers: 1
color_log: true
access_log: true
llama_stack:
# Legacy two-file shape (R2 deprecation window): external run.yaml consumed
# via library_client_config_path; no unified synthesis input. Kept as a
# dedicated fixture because the standard library-mode baseline migrated to
# unified mode in LCORE-2342, which silently removed legacy boot coverage.
use_as_library_client: true
library_client_config_path: run.yaml
user_data_collection:
feedback_enabled: true
feedback_storage: "/tmp/data/feedback"
transcripts_enabled: true
transcripts_storage: "/tmp/data/transcripts"
authentication:
module: "noop"
inference:
default_provider: openai
default_model: gpt-4o-mini
byok_rag:
- rag_id: e2e-test-docs
rag_type: inline::faiss
embedding_model: sentence-transformers/all-mpnet-base-v2
embedding_dimension: 768
vector_db_id: ${env.FAISS_VECTOR_STORE_ID}
db_path: ${env.KV_RAG_PATH:=~/.llama/storage/rag/kv_store.db}
score_multiplier: 1.0

rag:
tool:
- e2e-test-docs

shields:
- name: pii-redaction
provider_id: redaction
config:
rules:
- pattern: '\d+'
replacement: '[NUM]'

24 changes: 24 additions & 0 deletions tests/e2e/configuration/unified-mode/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Unified-mode e2e configuration fixtures

Fixtures for the five `unified-mode-*.feature` files (LCORE-2341/LCORE-2343).
Same layout as the parent directory: `library-mode/` and `server-mode/`
variants differing only in the `llama_stack` block; the harness resolves
`<dir>/<mode>/<file>` via the standard `configure_service` logic.

All profile-based fixtures reference `run.yaml` — the repo-root copy the CI
harness materializes from `tests/e2e/configs/run-<env>.yaml` — so they stay
provider-agnostic across the providers matrix.

| Fixture | Purpose |
|---|---|
| `lightspeed-stack-unified-providers.yaml` | Minimal unified config driven only by top-level `inference.providers` (default baseline, R1/S5). openai-specific — used by `@openai-only` scenarios. |
| `lightspeed-stack-unified-config-only.yaml` | Unified config driven only by `llama_stack.config` (`profile: run.yaml`, R1). |
| `lightspeed-stack-unified-relative-profile.yaml` | Same shape as config-only; exists to pin R8 (relative `profile:` resolves against the config file's directory) as a distinct intent. |
| `lightspeed-stack-unified-absolute-profile.yaml` | `profile:` as a container-absolute path (differs per mode subdir). |
| `lightspeed-stack-unified-native-override-scalar.yaml` | `native_override` replaces an overlapping scalar key (R5). Synthesis-only; never booted. |
| `lightspeed-stack-unified-native-override-list.yaml` | `native_override` replaces an overlapping list wholesale (R5). Synthesis-only; never booted. |
| `lightspeed-stack-invalid-providers-and-legacy.yaml` | INVALID: `inference.providers` + `library_client_config_path` (mutual exclusion, R3). Validation-only. |
| `lightspeed-stack-invalid-config-and-legacy.yaml` | INVALID: `llama_stack.config` + `library_client_config_path` (R3). Validation-only. |
| `lightspeed-stack-invalid-version-legacy-unified-body.yaml` | INVALID: `config_format_version: legacy` on a unified-shaped body (R11, LCORE-2872). Validation-only. |
| `lightspeed-stack-legacy-for-migration.yaml` | Legacy half of "the legacy migration fixture pair"; paired with the repo-root `run.yaml`. Deliberately free of enrichment sections so migrate→synthesize round-trips losslessly (see LCORE-3370). |
| `lightspeed-stack-unified-migrated.yaml` | Generated at test time by the `--migrate-config` step; gitignored and cleaned up after each scenario. |
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Lightspeed Core Service (LCS)
service:
host: 0.0.0.0
port: 8080
auth_enabled: false
workers: 1
color_log: true
access_log: true
llama_stack:
# Library mode - embeds the stack in-process
use_as_library_client: true
config:
profile: run.yaml
# INVALID: config block plus the legacy path (mutual exclusion, R3)
library_client_config_path: run.yaml
user_data_collection:
feedback_enabled: true
feedback_storage: "/tmp/data/feedback"
transcripts_enabled: true
transcripts_storage: "/tmp/data/transcripts"
authentication:
module: "noop"
inference:
default_provider: openai
default_model: gpt-4o-mini
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Lightspeed Core Service (LCS)
service:
host: 0.0.0.0
port: 8080
auth_enabled: false
workers: 1
color_log: true
access_log: true
llama_stack:
# Library mode - embeds the stack in-process
use_as_library_client: true
# INVALID: synthesis input plus the legacy path (mutual exclusion, R3)
library_client_config_path: run.yaml
user_data_collection:
feedback_enabled: true
feedback_storage: "/tmp/data/feedback"
transcripts_enabled: true
transcripts_storage: "/tmp/data/transcripts"
authentication:
module: "noop"
inference:
default_provider: openai
default_model: gpt-4o-mini
# Unified synthesis input (Decision S5): the high-level provider entry
# replaces the default baseline's openai provider by id at synthesis time.
providers:
- type: openai
id: openai
api_key_env: OPENAI_API_KEY
allowed_models:
- ${env.E2E_OPENAI_MODEL:=gpt-4o-mini}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Lightspeed Core Service (LCS)
service:
host: 0.0.0.0
port: 8080
auth_enabled: false
workers: 1
color_log: true
access_log: true
llama_stack:
# Library mode - embeds the stack in-process
use_as_library_client: true
user_data_collection:
feedback_enabled: true
feedback_storage: "/tmp/data/feedback"
transcripts_enabled: true
transcripts_storage: "/tmp/data/transcripts"
authentication:
module: "noop"
inference:
default_provider: openai
default_model: gpt-4o-mini
# Unified synthesis input (Decision S5): the high-level provider entry
# replaces the default baseline's openai provider by id at synthesis time.
providers:
- type: openai
id: openai
api_key_env: OPENAI_API_KEY
allowed_models:
- ${env.E2E_OPENAI_MODEL:=gpt-4o-mini}
# INVALID: explicit legacy marker on a unified-shaped body (R11, LCORE-2872)
config_format_version: legacy
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Lightspeed Core Service (LCS)
service:
host: 0.0.0.0
port: 8080
auth_enabled: false
workers: 1
color_log: true
access_log: true
llama_stack:
# Library mode - embeds the stack in-process
use_as_library_client: true
# Legacy two-file shape: external run.yaml, no synthesis input
library_client_config_path: run.yaml
user_data_collection:
feedback_enabled: true
feedback_storage: "/tmp/data/feedback"
transcripts_enabled: true
transcripts_storage: "/tmp/data/transcripts"
authentication:
module: "noop"
inference:
default_provider: openai
default_model: gpt-4o-mini
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Lightspeed Core Service (LCS)
service:
host: 0.0.0.0
port: 8080
auth_enabled: false
workers: 1
color_log: true
access_log: true
llama_stack:
# Library mode - embeds the stack in-process
use_as_library_client: true
config:
# Absolute path as mounted in the library-mode container
profile: /app-root/run.yaml
user_data_collection:
feedback_enabled: true
feedback_storage: "/tmp/data/feedback"
transcripts_enabled: true
transcripts_storage: "/tmp/data/transcripts"
authentication:
module: "noop"
inference:
default_provider: openai
default_model: gpt-4o-mini
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Lightspeed Core Service (LCS)
service:
host: 0.0.0.0
port: 8080
auth_enabled: false
workers: 1
color_log: true
access_log: true
llama_stack:
# Library mode - embeds the stack in-process
use_as_library_client: true
config:
# Synthesis baseline: the CI-materialized run.yaml (provider-agnostic)
profile: run.yaml
user_data_collection:
feedback_enabled: true
feedback_storage: "/tmp/data/feedback"
transcripts_enabled: true
transcripts_storage: "/tmp/data/transcripts"
authentication:
module: "noop"
inference:
default_provider: openai
default_model: gpt-4o-mini
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Lightspeed Core Service (LCS)
service:
host: 0.0.0.0
port: 8080
auth_enabled: false
workers: 1
color_log: true
access_log: true
llama_stack:
# Library mode - embeds the stack in-process
use_as_library_client: true
config:
profile: run.yaml
# R5: lists replace wholesale - the synthesized apis must equal exactly
# this list, not a merge with the baseline's (never booted - synthesis only)
native_override:
apis:
- inference
- tool_runtime
user_data_collection:
feedback_enabled: true
feedback_storage: "/tmp/data/feedback"
transcripts_enabled: true
transcripts_storage: "/tmp/data/transcripts"
authentication:
module: "noop"
inference:
default_provider: openai
default_model: gpt-4o-mini
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: Lightspeed Core Service (LCS)
service:
host: 0.0.0.0
port: 8080
auth_enabled: false
workers: 1
color_log: true
access_log: true
llama_stack:
# Library mode - embeds the stack in-process
use_as_library_client: true
config:
profile: run.yaml
# R5: the raw escape hatch wins; this scalar replaces the baseline's
# safety.excluded_categories value wholesale (never booted - synthesis only)
native_override:
safety:
excluded_categories: unified-override-marker
user_data_collection:
feedback_enabled: true
feedback_storage: "/tmp/data/feedback"
transcripts_enabled: true
transcripts_storage: "/tmp/data/transcripts"
authentication:
module: "noop"
inference:
default_provider: openai
default_model: gpt-4o-mini
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Lightspeed Core Service (LCS)
service:
host: 0.0.0.0
port: 8080
auth_enabled: false
workers: 1
color_log: true
access_log: true
llama_stack:
# Library mode - embeds the stack in-process
use_as_library_client: true
user_data_collection:
feedback_enabled: true
feedback_storage: "/tmp/data/feedback"
transcripts_enabled: true
transcripts_storage: "/tmp/data/transcripts"
authentication:
module: "noop"
inference:
default_provider: openai
default_model: gpt-4o-mini
# Unified synthesis input (Decision S5): the high-level provider entry
# replaces the default baseline's openai provider by id at synthesis time.
providers:
- type: openai
id: openai
api_key_env: OPENAI_API_KEY
allowed_models:
- ${env.E2E_OPENAI_MODEL:=gpt-4o-mini}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Lightspeed Core Service (LCS)
service:
host: 0.0.0.0
port: 8080
auth_enabled: false
workers: 1
color_log: true
access_log: true
llama_stack:
# Library mode - embeds the stack in-process
use_as_library_client: true
config:
# R8: relative profile resolves against this file's loaded location
profile: run.yaml
user_data_collection:
feedback_enabled: true
feedback_storage: "/tmp/data/feedback"
transcripts_enabled: true
transcripts_storage: "/tmp/data/transcripts"
authentication:
module: "noop"
inference:
default_provider: openai
default_model: gpt-4o-mini
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Lightspeed Core Service (LCS)
service:
host: 0.0.0.0
port: 8080
auth_enabled: false
workers: 1
color_log: true
access_log: true
llama_stack:
# Server mode - connects to the separate llama-stack service
use_as_library_client: false
url: http://${env.E2E_LLAMA_HOSTNAME}:8321
api_key: xyzzy
config:
profile: run.yaml
# INVALID: config block plus the legacy path (mutual exclusion, R3)
library_client_config_path: run.yaml
user_data_collection:
feedback_enabled: true
feedback_storage: "/tmp/data/feedback"
transcripts_enabled: true
transcripts_storage: "/tmp/data/transcripts"
authentication:
module: "noop"
inference:
default_provider: openai
default_model: gpt-4o-mini
Loading
Loading