Skip to content

LCORE-3141: Proper dependencies in documentation make targets - #2297

Merged
tisnik merged 1 commit into
lightspeed-core:mainfrom
tisnik:lcore-3141-proper-deps-in-docs-make-targets
Jul 31, 2026
Merged

LCORE-3141: Proper dependencies in documentation make targets#2297
tisnik merged 1 commit into
lightspeed-core:mainfrom
tisnik:lcore-3141-proper-deps-in-docs-make-targets

Conversation

@tisnik

@tisnik tisnik commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Description

LCORE-3141: Proper dependencies in documentation make targets

Type of change

  • Refactor
  • New feature
  • Bug fix
  • CVE fix
  • Optimization
  • Documentation Update
  • Configuration Update
  • Bump-up service version
  • Bump-up dependent library
  • Bump-up library or tool used for development (does not change the final image)
  • CI configuration change
  • Konflux configuration change
  • Unit tests improvement
  • Integration tests improvement
  • End to end tests improvement
  • Benchmarks improvement

Tools used to create PR

  • Assisted-by: N/A
  • Generated by: N/A

Related Tickets & Documents

  • Related Issue #LCORE-3141

Summary by CodeRabbit

  • Documentation
    • Improved documentation generation so model documentation is included automatically.
    • Documentation outputs now update when their source model definitions change.
    • Simplified model documentation build management for more reliable generated JSON and diagrams.

@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

The Makefile now uses docs/models as the aggregate model-generation target. Documentation generation depends on this target. Model outputs declare source-model prerequisites.

Changes

Documentation generation

Layer / File(s) Summary
Aggregate model generation and source prerequisites
Makefile
The .PHONY list now includes docs/models. generate-documentation depends on docs/models. JSON and PlantUML targets track their source model files while retaining their generation commands.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

Suggested reviewers: anik120, are-ces, asimurka

🚥 Pre-merge checks | ✅ 7
✅ Passed checks (7 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: correcting dependencies in documentation Make targets.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Performance And Algorithmic Complexity ✅ Passed PASS: The patch only changes Make dependency declarations; wildcard expansion covers finite model files, and generation commands remain unchanged. No O(n²), N+1, or unbounded work was added.
Security And Secret Handling ✅ Passed Only Makefile target prerequisites changed. Added lines contain no secret values, auth endpoints, API responses, K8s resources, or new command recipes; generation commands remain unchanged.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Fix failing CI checks
🧪 Generate unit tests (beta)
  • Create PR with unit tests
✨ Simplify code
  • Create PR with simplified code

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@Makefile`:
- Line 201: Add generate-documentation to the Makefile’s existing .PHONY
declaration alongside doc and docs/models, preserving its aggregate target
dependencies and recipe behavior.
- Around line 265-267: Update the common.puml Make target prerequisites to use a
manifest of all model source files under src/models/common, including nested
directories such as agents and responses, instead of the non-recursive wildcard.
Keep the existing pyreverse generation and rename commands unchanged so changes
to nested files trigger regeneration.
- Around line 261-263: Update the responses.puml prerequisite to include the
wildcard for src/models/api/responses/successful/* alongside the existing
error-model wildcard, so changes to successful response models trigger
regeneration while preserving the current pyreverse and move commands.
- Line 229: Update the model-generation targets, including the requests target
and every other target using $(wildcard ...), to depend on a manifest or
stale-source stamp that detects both added and deleted model files during
incremental builds, while retaining the existing wildcard prerequisites for
content changes. Ensure the stamp is regenerated when the source set changes so
generated JSON and PlantUML outputs cannot remain stale after deletions.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: afe20213-4c7a-48ac-aee4-9464234410f6

📥 Commits

Reviewing files that changed from the base of the PR and between 690d37b and c69c3cc.

📒 Files selected for processing (1)
  • Makefile
📜 Review details
⏰ Context from checks skipped due to timeout. (14)
  • GitHub Check: integration_tests (3.13)
  • GitHub Check: mypy
  • GitHub Check: bandit
  • GitHub Check: Pyright
  • GitHub Check: radon
  • GitHub Check: list_outdated_dependencies
  • GitHub Check: E2E Tests for Lightspeed Evaluation job
  • GitHub Check: E2E: server mode / ci / group 3
  • GitHub Check: E2E: server mode / ci / group 1
  • GitHub Check: E2E: library mode / ci / group 1
  • GitHub Check: E2E: library mode / ci / group 2
  • GitHub Check: E2E: library mode / ci / group 3
  • GitHub Check: E2E: server mode / ci / group 2
  • GitHub Check: Konflux kflux-prd-rh02 / lightspeed-stack-0-7-on-pull-request
🧰 Additional context used
📓 Path-based instructions (1)
**/*

📄 CodeRabbit inference engine (Custom checks)

**/*: Flag meaningful O(n^2)+ algorithms on non-trivial inputs, including handlers and Kubernetes list operations.
Flag N+1 patterns that list items and then query once per item, including Kubernetes API and database access.
Flag expensive work inside loops, including API calls, JSON parsing, and regex compilation.
Flag unbounded growth in caches, watchers, or buffers when eviction or limits are missing.
Flag missing pagination or limits on list operations and API endpoints.
Flag secrets or tokens logged in plaintext or hardcoded in source.
Flag API endpoints missing authentication or authorization.
Flag injection vulnerabilities, including SQL injection, command injection, and path traversal.
Flag sensitive data leaked in API responses, WebSocket messages, or logs.
Flag Kubernetes Secrets and Red Hat secrets missing OwnerReferences.

Files:

  • Makefile
🪛 checkmake (0.3.2)
Makefile

[warning] 201-201: Target "generate-documentation" should be declared PHONY.

(phonydeclared)

🔇 Additional comments (1)
Makefile (1)

28-29: LGTM!

Comment thread Makefile
rm output.md

generate-documentation: devel-doc schema ## Generate or regenerated content of the whole /docs subdirectory
generate-documentation: devel-doc schema docs/models ## Generate or regenerated content of the whole /docs subdirectory

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Declare generate-documentation as phony.

Add generate-documentation to the .PHONY list with doc and docs/models. This prevents a same-named workspace file from changing the aggregate target status. GNU Make recommends phony declarations for action targets. (gnu.org)

🧰 Tools
🪛 checkmake (0.3.2)

[warning] 201-201: Target "generate-documentation" should be declared PHONY.

(phonydeclared)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Makefile` at line 201, Add generate-documentation to the Makefile’s existing
.PHONY declaration alongside doc and docs/models, preserving its aggregate
target dependencies and recipe behavior.

Source: Linters/SAST tools

Comment thread Makefile
openapi-to-markdown --input_file $< --output_file $@

docs/models/requests.json: ## Generate OpenAPI specification with requests models
docs/models/requests.json: $(wildcard src/models/api/requests/*) ## Generate OpenAPI specification with requests models

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== Makefile relevant section =="
sed -n '210,275p' Makefile | cat -n

echo
echo "== search for generated docs targets/prereqs =="
rg -n 'docs/(models|.*openapi|.*plantuml|.*diagram)|requests\.json|PlantUML|openapi|swagger' Makefile -C 3 || true

Repository: lightspeed-core/lightspeed-stack

Length of output: 11613


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== generated model files present =="
for f in docs/models/requests.md docs/models/requests.json docs/models/responses.md docs/models/responses.json docs/models/database.md docs/models/database.json docs/models/common.md docs/models/common.json docs/models/agents.json docs/models/common_responses.json; do
  if [ -e "$f" ]; then
    stat -c '%n %Y' "$f"
  else
    echo "MISSING $f"
  fi
done

echo
echo "== src model directories/files =="
for d in src/models/api/requests src/models/api/responses/successful src/models/api/responses/error src/models/common src/models/common/agents src/models/common/responses src/models/database src/models; do
  echo "--- $d"
  if [ -d "$d" ]; then find "$d" -maxdepth 2 -type f | sort | sed 's#^#  #' | head -80; else echo "ABSSENT"; fi
done

echo
echo "== generated docs listing =="
find docs/models docs/devel_doc -maxdepth 2 -type f 2>/dev/null | sort | sed 's#^docs/#docs/#' | head -200

Repository: lightspeed-core/lightspeed-stack

Length of output: 248


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== generated model files presence and timestamps =="
for f in docs/models/requests.md docs/models/requests.json docs/models/responses.md docs/models/responses.json docs/models/database.md docs/models/database.json docs/models/common.md docs/models/common.json docs/models/agents.json docs/models/common_responses.json; do
  if ls -ld "$f" >/dev/null 2>&1; then
    ls -l "$f"
  else
    echo "MISSING $f"
  fi
done

echo
echo "== generated docs listing =="
find docs/models docs/devel_doc -maxdepth 2 -type f 2>/dev/null | sort | sed 's#^docs/#docs/#' | head -200

echo
echo "== relevant Makefile targets =="
sed -n '228,267p' Makefile | cat -n

echo
echo "== source model directories =="
for d in src/models/api/requests src/models/api/responses/successful src/models/api/responses/error src/models/common src/models/common/agents src/models/common/responses src/models/database src/models/config.py; do
  echo "--- $d"
  if [ -d "$d" ]; then find "$d" -maxdepth 2 -type f | sort | sed 's#^\(#  (#' | head -80
  elif [ -f "$d" ]; then ls -l "$d"
  else echo "MISSING"; fi
done

echo
echo "== Make $(wildcard ...) expansion for present/missing sources =="
python3 - <<'PY'
import os
import glob
patterns=[
 "src/models/api/requests/*",
 "src/models/api/responses/successful/*",
 "src/models/api/responses/error/*",
 "src/models/common/*",
 "src/models/common/agents/*",
 "src/models/common/responses/*",
 "src/models/database/*",
]
for p in patterns:
    files=glob.glob(p)
    print(f"{p}: {len(files)} files")
    for f in files:
        print(f"  {os.path.basename(f)} {os.path.getmtime(f) if os.path.exists(f) else ''}")
PY

Repository: lightspeed-core/lightspeed-stack

Length of output: 5102


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== source model file counts and names =="
python3 - <<'PY'
import glob, os

patterns = [
 ("requests", "src/models/api/requests/*"),
 ("successful", "src/models/api/responses/successful/*"),
 ("error", "src/models/api/responses/error/*"),
 ("common", "src/models/common/*"),
 ("agents", "src/models/common/agents/*"),
 ("common_responses", "src/models/common/responses/*"),
 ("database", "src/models/database/*"),
]
for name, pattern in patterns:
    files = sorted(glob.glob(pattern))
    print(f"## {name}: {len(files)} files")
    for f in files:
        print(f"\t{os.path.basename(f)}")
PY

echo
echo "== clean Makefile runs and staleness behavior (no-op; inspect relevant Python generator only) =="
grep -n "def dump_models_group\|models-group\|api/requests\|api/responses\|common" src/lightspeed_stack.py || true

Repository: lightspeed-core/lightspeed-stack

Length of output: 1786


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== dump-models-group implementation =="
sed -n '220,310p' src/lightspeed_stack.py | cat -n

echo
echo "== pyreverse invocation context =="
rg -n "pyreverse|packages|classes" Makefile scripts tests -g '*.mk' -g '*.py' 2>/dev/null | head -80 || true

echo
echo "== generated docs/ config target =="
sed -n '300,305p' Makefile | cat -n

Repository: lightspeed-core/lightspeed-stack

Length of output: 10169


🌐 Web query:

GNU Make wildcard function expands before make reads makefile generated file prerequisites

💡 Result:

Yes, the GNU Make wildcard function is expanded before the makefile reads generated file prerequisites [1][2]. GNU Make processes makefiles in two distinct phases: the read-in phase and the execution phase [1]. During the read-in phase, Make parses all non-recipe lines, which includes expanding variables used in target and prerequisite lists [1][2]. Because wildcard functions and shell commands are evaluated during this initial read-in phase, they cannot detect files that have not yet been created by recipes, as those recipes have not yet been executed [1]. If you rely on wildcards to identify files generated during the build process, they will typically appear empty or incomplete because the files do not exist at the time of evaluation [1]. To overcome this limitation, common strategies include: 1. SECONDEXPANSION: By using the.SECONDEXPANSION special target and escaping the dollar sign (e.g., $$(wildcard $$@.cpp)), you can defer the expansion of prerequisites until the execution phase, at which point automatic variables like $@ are defined and the files may already exist [2]. 2. Dependency Inclusion: For advanced dependency management, files are often generated as side effects (e.g.,.d files) and then included in the makefile [3]. By declaring these generated files as targets without recipes, you instruct Make to rebuild them if they are missing or out of date before processing the rest of the makefile [3]. Using the wildcard function within an include directive allows Make to proceed gracefully if those generated files do not yet exist [3].

Citations:


Track deleted source models in incremental documentation builds.

$(wildcard src/models/api/requests/*) only lists sources present when Make parses the Makefile. If a source model is removed, the generated JSON or PlantUML target keeps older prerequisites and can stay fresh with stale content. Add a manifest/stale-source stamp that detects additions and deletions, while keeping file prerequisites for content changes. Apply the same pattern to the other $(wildcard ...) model generation targets.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Makefile` at line 229, Update the model-generation targets, including the
requests target and every other target using $(wildcard ...), to depend on a
manifest or stale-source stamp that detects both added and deleted model files
during incremental builds, while retaining the existing wildcard prerequisites
for content changes. Ensure the stamp is regenerated when the source set changes
so generated JSON and PlantUML outputs cannot remain stale after deletions.

Comment thread Makefile Outdated
Comment thread Makefile Outdated
@tisnik
tisnik force-pushed the lcore-3141-proper-deps-in-docs-make-targets branch from c69c3cc to 8047492 Compare July 31, 2026 09:40
@tisnik

tisnik commented Jul 31, 2026

Copy link
Copy Markdown
Contributor Author

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Full review finished.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

♻️ Duplicate comments (1)
Makefile (1)

230-232: 🗄️ Data Integrity & Integration | 🟠 Major

Track deleted source models in incremental builds.

This is the same unresolved issue reported in the previous review. Make evaluates each $(wildcard ...) expression while it reads the Makefile. After a source model is deleted, that path is removed from the prerequisite list. An existing JSON or PlantUML artifact can then remain up to date and retain the deleted model.

Add a force-evaluated source-set manifest or stamp that changes when files are added or removed. Keep the current file prerequisites for content changes.

Run this verification:

#!/bin/bash
set -euo pipefail

rg -n 'docs/models/.*\.(json|puml):.*\$\(wildcard' Makefile

tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' EXIT
mkdir -p "$tmp/src"

cat >"$tmp/Makefile" <<'EOF'
out.json: $(wildcard src/*)
	`@echo` regenerate
EOF

touch "$tmp/out.json"
sleep 1
touch "$tmp/src/model.py"
make -C "$tmp" -n out.json | tee "$tmp/with-source.plan"
grep -q regenerate "$tmp/with-source.plan"

touch "$tmp/out.json"
rm "$tmp/src/model.py"
make -C "$tmp" -n out.json | tee "$tmp/after-delete.plan"

if grep -q regenerate "$tmp/after-delete.plan"; then
  echo "unexpected rebuild"
  exit 1
fi

Also applies to: 238-240, 242-244, 246-248, 250-252, 254-256, 258-260, 262-264, 266-268, 270-272

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Makefile` around lines 230 - 232, Update each model-generation target around
the visible requests rule and the corresponding JSON/PlantUML targets to add a
force-evaluated source-set manifest or stamp that changes when model files are
added or deleted, while retaining the existing $(wildcard ...) prerequisites for
content changes. Ensure all listed targets depend on this manifest or stamp so
incremental builds regenerate artifacts after source removal.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Duplicate comments:
In `@Makefile`:
- Around line 230-232: Update each model-generation target around the visible
requests rule and the corresponding JSON/PlantUML targets to add a
force-evaluated source-set manifest or stamp that changes when model files are
added or deleted, while retaining the existing $(wildcard ...) prerequisites for
content changes. Ensure all listed targets depend on this manifest or stamp so
incremental builds regenerate artifacts after source removal.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: dbd122de-5e59-4bf6-98e8-766251bd31d8

📥 Commits

Reviewing files that changed from the base of the PR and between 690d37b and 8047492.

📒 Files selected for processing (1)
  • Makefile
📜 Review details
⏰ Context from checks skipped due to timeout. (1)
  • GitHub Check: Red Hat Konflux / lightspeed-stack-0-7-e2e-tests / lightspeed-stack-0-7
⚠️ CI failures not shown inline (15)

GitHub Actions: E2E Tests for Lightspeed Evaluation / 0_E2E Tests for Lightspeed Evaluation job.txt: LCORE-3141: Proper dependencies in documentation make targets

Conclusion: failure

View job details

##[group]Run cd lightspeed-evaluation
 �[36;1mcd lightspeed-evaluation�[0m
 �[36;1mecho "Installing e2e tests dependencies"�[0m
 �[36;1mpip install --break-system-packages uv�[0m
 �[36;1muv sync�[0m
 �[36;1m�[0m
 �[36;1mecho "Running e2e test suite..."�[0m
 �[36;1mmake e2e_tests_lcore�[0m
 shell: /usr/bin/bash -e {0}
 env:
   OPENAI_***REDACTED_SECRET_ASSIGNMENT***
   E2E_OPENAI_MODEL: gpt-4o-mini
   FAISS_VECTOR_STORE_ID: vs_8c94967b-81cc-4028-a294-9cfac6fd9ae2
   TERM: xterm-256color
   FORCE_COLOR: 1
 ##[endgroup]
 Installing e2e tests dependencies
 Defaulting to user installation because normal site-packages is not writeable
 Collecting uv
   Downloading uv-0.12.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (11 kB)
 Downloading uv-0.12.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (22.0 MB)
 �[?25l   �[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━�[0m �[32m0.0/22.0 MB�[0m �[31m?�[0m eta �[36m-:--:--�[0m
 �[2K   �[38;5;197m━━�[0m�[38;5;237m╺�[0m�[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━�[0m �[32m1.4/22.0 MB�[0m �[31m42.2 MB/s�[0m eta �[36m0:00:01�[0m
 �[2K   �[38;5;197m━━━━━━━━━�[0m�[38;5;197m╸�[0m�[38;5;237m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━�[0m �[32m5.4/22.0 MB�[0m �[31m79.0 MB/s�[0m eta �[36m0:00:01�[0m
 �[2K   �[38;5;197m━━━━━━━━━━━━━━━━━━━�[0m�[38;5;237m╺�[0m�[38;5;237m━━━━━━━━━━━━━━━━━━━━�[0m �[32m10.6/22.0 MB�[0m �[31m119.9 MB/s�[0m eta �[36m0:00:01�[0m
 �[2K   �[38;5;197m━━━━━━━━━━━━━━━━━━━━━━━━━━━━�[0m�[38;5;237m╺�[0m�[38;5;237m━━━━━━━━━━━�[0m �[32m15.7/22.0 MB�[0m �[31m151.0 MB/s�[0m eta �[36m0:00:01�[0m
 �[2K   �[38;5;197m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━�[0m�[38;5;197m╸�[0m �[32m21.9/22.0 MB�[0m �[31m164.8 MB/s�[0m eta �[36m0:00:01�[0m
 �[2K   �[38;5;70m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━�[0m �[32m22.0/22.0 MB�[0m �[31m112.5 MB/s�[0m eta �[36m0:00:00�[0m
 �[?25hInstalling collected packages: uv
 Successfully installed uv-0.12.0
 Using CPython 3.12.3 interpreter at: �[36m/usr/bin/python3�[39m
 Creati...

GitHub Actions: E2E Tests / E2E server mode _ ci _ group 1: LCORE-3141: Proper dependencies in documentation make targets

Conclusion: failure

View job details

[36mGiven �[0m�[36mlightspeed-stack --migrate-config is run for the legacy migration fixture pair�[0m�[90m              # None�[0m
     �[36mAnd �[0m�[36mThe service uses the lightspeed-stack-unified-migrated.yaml configuration�[0m�[90m                     # None�[0m
     �[36mAnd �[0m�[36mLlama Stack is restarted�[0m�[90m                                                                      # None�[0m
     �[36mAnd �[0m�[36mLightspeed Stack is restarted�[0m�[90m                                                                 # None�[0m
     �[36mWhen �[0m�[36mI access endpoint "readiness" using HTTP GET method�[0m�[90m                                          # None�[0m
     �[36mThen �[0m�[36mThe status code of the response is 200�[0m�[90m                                                       # None�[0m
     �[36mWhen �[0m�[36mI use "query" to ask question�[0m�[90m                                                                # None�[0m
       """
       {"query": "Say hello", "model": "{MODEL}", "provider": "{PROVIDER}"}
       """
     �[36mThen �[0m�[36mThe status code of the response is 200�[0m�[90m                                                       # None�[0m
 `@e2e_group_2` `@skip`
 Feature: Unified mode configuration synthesis�[90m # tests/e2e/features/unified-mode-synthesis.feature:2�[0m
   `@e2e_group_2` `@skip`
   Feature: Unified mode configuration synthesis �[90m # tests/e2e/features/unified-mode-synthesis.feature:2�[0m
   Scenario: native_override replaces an overlapping scalar key �[90m                                            # tests/e2e/features/unified-mode-synthesis.feature:10�[0m
     �[36mGiven �[0m�[36mThe service is started locally�[0m�[90m                                                                   # None�[0m
     �[36mAnd �[0m�[36mThe system is in default state�[0m�[90m                                                                     # None�[0m
     �[36mAnd �[0m�[36mthe Lightspeed stack configuration directory is "tests/e2e/config...

GitHub Actions: E2E Tests / E2E server mode _ ci _ group 3: LCORE-3141: Proper dependencies in documentation make targets

Conclusion: failure

View job details

ion.feature:42�[0m
     �[36mGiven �[0m�[36mThe service is started locally�[0m�[90m                                                              # None�[0m
     �[36mAnd �[0m�[36mThe system is in default state�[0m�[90m                                                                # None�[0m
     �[36mAnd �[0m�[36mREST API service prefix is /v1�[0m�[90m                                                                # None�[0m
     �[36mAnd �[0m�[36mthe Lightspeed stack configuration directory is "tests/e2e/configuration/unified-mode"�[0m�[90m        # None�[0m
     �[36mGiven �[0m�[36mlightspeed-stack --migrate-config is run for the legacy migration fixture pair�[0m�[90m              # None�[0m
     �[36mAnd �[0m�[36mThe service uses the lightspeed-stack-unified-migrated.yaml configuration�[0m�[90m                     # None�[0m
     �[36mAnd �[0m�[36mLlama Stack is restarted�[0m�[90m                                                                      # None�[0m
     �[36mAnd �[0m�[36mLightspeed Stack is restarted�[0m�[90m                                                                 # None�[0m
     �[36mWhen �[0m�[36mI access endpoint "readiness" using HTTP GET method�[0m�[90m                                          # None�[0m
     �[36mThen �[0m�[36mThe status code of the response is 200�[0m�[90m                                                       # None�[0m
     �[36mWhen �[0m�[36mI use "query" to ask question�[0m�[90m                                                                # None�[0m
       """
       {"query": "Say hello", "model": "{MODEL}", "provider": "{PROVIDER}"}
       """
     �[36mThen �[0m�[36mThe status code of the response is 200�[0m�[90m                                                       # None�[0m
 `@e2e_group_2` `@skip`
 Feature: Unified mode configuration synthesis�[90m # tests/e2e/features/unified-mode-synthesis.feature:2�[0m
   `@e2e_group_2` `@skip`
   Feature: Unified mode configuration synthesis �[90m # tests/e2e/features/unified-...

GitHub Actions: E2E Tests / E2E server mode _ ci _ group 2: LCORE-3141: Proper dependencies in documentation make targets

Conclusion: failure

View job details

[0m
       """
       {"query": "Echo 'Hello World'. Use the load_skill tool to load the 'echo' skill.", "model": "{MODEL}", "provider": "{PROVIDER}"}
       """
     �[90mWhen �[0m�[90mI wait for the response to be completed�[0m�[90m                                        # tests/e2e/features/steps/llm_query_response.py:91�[0m
 �[2A    �[31mWhen �[0m�[31mI wait for the response to be completed�[0m�[90m                                        # tests/e2e/features/steps/llm_query_response.py:91�[0m
       Traceback (most recent call last):
         File "/home/runner/work/lightspeed-stack/lightspeed-stack/.venv/lib/python3.12/site-packages/behave/model.py", line 1991, in run
           match.run(runner.context)
         File "/home/runner/work/lightspeed-stack/lightspeed-stack/.venv/lib/python3.12/site-packages/behave/matchers.py", line 105, in run
           self.func(context, *args, **kwargs)
         File "tests/e2e/features/steps/llm_query_response.py", line 95, in wait_for_complete_response
           context.response.raise_for_status()
         File "/home/runner/work/lightspeed-stack/lightspeed-stack/.venv/lib/python3.12/site-packages/requests/models.py", line 1167, in raise_for_status
           raise HTTPError(http_error_msg, response=self)
       requests.exceptions.HTTPError: 429 Client Error: Too Many Requests for url: http://localhost:8080/v1/streaming_query
 AUTO-RETRY SCENARIO (attempt 3)
     �[36mThen �[0m�[36mThe status code of the response is 200�[0m�[90m                                         # None�[0m
     �[36mAnd �[0m�[36mThe body of the "tool_calls" field of the response is the following�[0m�[90m             # None�[0m
       """
       [
         {
           "name": "load_skill",
           "args": {
             "skill_name": "echo"
           },
           "type": "function_call"
         }
       ]
       """
     �[36mAnd �[0m�[36mThe body of the "tool_results" field of the response is the following�[0m�[90m           # None�[0m
    ...

GitHub Actions: E2E Tests / E2E library mode _ ci _ group 2: LCORE-3141: Proper dependencies in documentation make targets

Conclusion: failure

View job details

                         # tests/e2e/features/steps/llm_query_response.py:100�[0m
       """
       {"query": "Echo 'Hello World'. Use the load_skill tool to load the 'echo' skill.", "model": "{MODEL}", "provider": "{PROVIDER}"}
       """
 �[5A    �[32mWhen �[0m�[32mI use "�[0m�[32m�[1mstreaming_query�[0m�[32m" to ask question�[0m�[90m                                        # tests/e2e/features/steps/llm_query_response.py:100 1.347s�[0m
       """
       {"query": "Echo 'Hello World'. Use the load_skill tool to load the 'echo' skill.", "model": "{MODEL}", "provider": "{PROVIDER}"}
       """
     �[90mWhen �[0m�[90mI wait for the response to be completed�[0m�[90m                                        # tests/e2e/features/steps/llm_query_response.py:91�[0m
 �[2A    �[31mWhen �[0m�[31mI wait for the response to be completed�[0m�[90m                                        # tests/e2e/features/steps/llm_query_response.py:91�[0m
       Traceback (most recent call last):
         File "/home/runner/work/lightspeed-stack/lightspeed-stack/.venv/lib/python3.12/site-packages/behave/model.py", line 1991, in run
           match.run(runner.context)
         File "/home/runner/work/lightspeed-stack/lightspeed-stack/.venv/lib/python3.12/site-packages/behave/matchers.py", line 105, in run
           self.func(context, *args, **kwargs)
         File "tests/e2e/features/steps/llm_query_response.py", line 95, in wait_for_complete_response
           context.response.raise_for_status()
         File "/home/runner/work/lightspeed-stack/lightspeed-stack/.venv/lib/python3.12/site-packages/requests/models.py", line 1167, in raise_for_status
           raise HTTPError(http_error_msg, response=self)
       requests.exceptions.HTTPError: 429 Client Error: Too Many Requests for url: http://localhost:8080/v1/streaming_query
 AUTO-RETRY SCENARIO (attempt 3)
     �[36mThen �[0m�[36mThe status code of the response is 200�[0m�[90m                                         # None�[0m
     �[36mA...

GitHub Actions: E2E Tests / 2_E2E library mode _ ci _ group 1.txt: LCORE-3141: Proper dependencies in documentation make targets

Conclusion: failure

View job details

xture pair�[0m�[90m               # None�[0m
     �[36mAnd �[0m�[36mThe service uses the lightspeed-stack-unified-migrated.yaml configuration�[0m�[90m                      # None�[0m
     �[36mAnd �[0m�[36mThe service is restarted�[0m�[90m                                                                       # None�[0m
     �[36mWhen �[0m�[36mI access endpoint "readiness" using HTTP GET method�[0m�[90m                                           # None�[0m
     �[36mThen �[0m�[36mThe status code of the response is 200�[0m�[90m                                                        # None�[0m
     �[36mWhen �[0m�[36mI use "query" to ask question�[0m�[90m                                                                 # None�[0m
       """
       {"query": "Say hello", "model": "{MODEL}", "provider": "{PROVIDER}"}
       """
     �[36mThen �[0m�[36mThe status code of the response is 200�[0m�[90m                                                        # None�[0m
   `@skip-in-library-mode`
   Scenario: Migrated unified configuration drives byte-identical Llama Stack behavior in server mode �[90m # tests/e2e/features/unified-mode-migration.feature:42�[0m
     �[36mGiven �[0m�[36mThe service is started locally�[0m�[90m                                                              # None�[0m
     �[36mAnd �[0m�[36mThe system is in default state�[0m�[90m                                                                # None�[0m
     �[36mAnd �[0m�[36mREST API service prefix is /v1�[0m�[90m                                                                # None�[0m
     �[36mAnd �[0m�[36mthe Lightspeed stack configuration directory is "tests/e2e/configuration/unified-mode"�[0m�[90m        # None�[0m
     �[36mGiven �[0m�[36mlightspeed-stack --migrate-config is run for the legacy migration fixture pair�[0m�[90m              # None�[0m
     �[36mAnd �[0m�[36mThe service uses the lightspeed-stack-unified-migrated.yaml configuration�[0m�[90m                     # None�[0m
     �[36mAn...

GitHub Actions: E2E Tests / 4_E2E library mode _ ci _ group 3.txt: LCORE-3141: Proper dependencies in documentation make targets

Conclusion: failure

View job details

mWhen �[0m�[36mI access endpoint "readiness" using HTTP GET method�[0m�[90m                                           # None�[0m
     �[36mThen �[0m�[36mThe status code of the response is 200�[0m�[90m                                                        # None�[0m
     �[36mWhen �[0m�[36mI use "query" to ask question�[0m�[90m                                                                 # None�[0m
       """
       {"query": "Say hello", "model": "{MODEL}", "provider": "{PROVIDER}"}
       """
     �[36mThen �[0m�[36mThe status code of the response is 200�[0m�[90m                                                        # None�[0m
   `@skip-in-library-mode`
   Scenario: Migrated unified configuration drives byte-identical Llama Stack behavior in server mode �[90m # tests/e2e/features/unified-mode-migration.feature:42�[0m
     �[36mGiven �[0m�[36mThe service is started locally�[0m�[90m                                                              # None�[0m
     �[36mAnd �[0m�[36mThe system is in default state�[0m�[90m                                                                # None�[0m
     �[36mAnd �[0m�[36mREST API service prefix is /v1�[0m�[90m                                                                # None�[0m
     �[36mAnd �[0m�[36mthe Lightspeed stack configuration directory is "tests/e2e/configuration/unified-mode"�[0m�[90m        # None�[0m
     �[36mGiven �[0m�[36mlightspeed-stack --migrate-config is run for the legacy migration fixture pair�[0m�[90m              # None�[0m
     �[36mAnd �[0m�[36mThe service uses the lightspeed-stack-unified-migrated.yaml configuration�[0m�[90m                     # None�[0m
     �[36mAnd �[0m�[36mLlama Stack is restarted�[0m�[90m                                                                      # None�[0m
     �[36mAnd �[0m�[36mLightspeed Stack is restarted�[0m�[90m                                                                 # None�[0m
     �[36mWhen �[0m�[36mI access endpoint "readiness" using HTTP GET...

GitHub Actions: E2E Tests / E2E library mode _ ci _ group 2: LCORE-3141: Proper dependencies in documentation make targets

Conclusion: failure

View job details

peed-stack  |     provider_id: huggingface
 lightspeed-stack  |     provider_type: remote::huggingface
 lightspeed-stack  |   - config:
 lightspeed-stack  |       kvstore:
 lightspeed-stack  |         backend: kv_default
 lightspeed-stack  |         namespace: localfs_datasetio
 lightspeed-stack  |     module: null
 lightspeed-stack  |     provider_id: localfs
 lightspeed-stack  |     provider_type: inline::localfs
 lightspeed-stack  |   eval:
 lightspeed-stack  |   - config:
 lightspeed-stack  |       kvstore:
 lightspeed-stack  |         backend: kv_default
 lightspeed-stack  |         namespace: eval_store
 lightspeed-stack  |     module: null
 lightspeed-stack  |     provider_id: meta-reference
 lightspeed-stack  |     provider_type: inline::meta-reference
 lightspeed-stack  |   files:
 lightspeed-stack  |   - config:
 lightspeed-stack  |       metadata_store:
 lightspeed-stack  |         backend: sql_default
 lightspeed-stack  |         table_name: files_metadata
 lightspeed-stack  |       storage_dir: ~/.llama/storage/files
 lightspeed-stack  |     module: null
 lightspeed-stack  |     provider_id: meta-reference-files
 lightspeed-stack  |     provider_type: inline::localfs
 lightspeed-stack  |   inference:
 lightspeed-stack  |   - config:
 lightspeed-stack  |       allowed_models:
 lightspeed-stack  |       - gpt-4o-mini
 lightspeed-stack  |       ***REDACTED_SECRET_ASSIGNMENT***
 lightspeed-stack  |     module: null
 lightspeed-stack  |     provider_id: openai
 lightspeed-stack  |     provider_type: remote::openai
 lightspeed-stack  |   - config: {}
 lightspeed-stack  |     module: null
 lightspeed-stack  |     provider_id: sentence-transformers
 lightspeed-stack  |     provider_type: inline::sentence-transformers
 lightspeed-stack  |   safety:
 lightspeed-stack  |   - config:
 lightspeed-stack  |       excluded_categories: []
 lightspeed-stack  |     module: null
 lightspeed-stack  |     provider_id: llama-guard
 lightspeed-stack  |     provider_type: in...

GitHub Actions: E2E Tests / 5_E2E library mode _ ci _ group 2.txt: LCORE-3141: Proper dependencies in documentation make targets

Conclusion: failure

View job details

                         # tests/e2e/features/steps/llm_query_response.py:100�[0m
       """
       {"query": "Echo 'Hello World'. Use the load_skill tool to load the 'echo' skill.", "model": "{MODEL}", "provider": "{PROVIDER}"}
       """
 �[5A    �[32mWhen �[0m�[32mI use "�[0m�[32m�[1mstreaming_query�[0m�[32m" to ask question�[0m�[90m                                        # tests/e2e/features/steps/llm_query_response.py:100 1.347s�[0m
       """
       {"query": "Echo 'Hello World'. Use the load_skill tool to load the 'echo' skill.", "model": "{MODEL}", "provider": "{PROVIDER}"}
       """
     �[90mWhen �[0m�[90mI wait for the response to be completed�[0m�[90m                                        # tests/e2e/features/steps/llm_query_response.py:91�[0m
 �[2A    �[31mWhen �[0m�[31mI wait for the response to be completed�[0m�[90m                                        # tests/e2e/features/steps/llm_query_response.py:91�[0m
       Traceback (most recent call last):
         File "/home/runner/work/lightspeed-stack/lightspeed-stack/.venv/lib/python3.12/site-packages/behave/model.py", line 1991, in run
           match.run(runner.context)
         File "/home/runner/work/lightspeed-stack/lightspeed-stack/.venv/lib/python3.12/site-packages/behave/matchers.py", line 105, in run
           self.func(context, *args, **kwargs)
         File "tests/e2e/features/steps/llm_query_response.py", line 95, in wait_for_complete_response
           context.response.raise_for_status()
         File "/home/runner/work/lightspeed-stack/lightspeed-stack/.venv/lib/python3.12/site-packages/requests/models.py", line 1167, in raise_for_status
           raise HTTPError(http_error_msg, response=self)
       requests.exceptions.HTTPError: 429 Client Error: Too Many Requests for url: http://localhost:8080/v1/streaming_query
 AUTO-RETRY SCENARIO (attempt 3)
     �[36mThen �[0m�[36mThe status code of the response is 200�[0m�[90m                                         # None�[0m
     �[36mA...

GitHub Actions: E2E Tests / E2E server mode _ ci _ group 1: LCORE-3141: Proper dependencies in documentation make targets

Conclusion: failure

View job details

]
 lightspeed-stack  | .692 INFO:     Retrying request to /v1/moderations in 0.965031 seconds  [llama_stack_client._base_client:1685]
 lightspeed-stack  | .435 INFO:     172.18.0.1:39728 - "POST /v1/query HTTP/1.1" 429 Too Many Requests
 lightspeed-stack  | INFO:httpx:HTTP Request: POST http://llama-stack:8321/v1/moderations "HTTP/1.1 429 Too Many Requests"
 lightspeed-stack  | .139 WARNING:  No-op authentication dependency is being used. The service is running in insecure mode intended solely for development purposes  [lightspeed_stack.authentication.noop:50]
 lightspeed-stack  | .140 INFO:     Response to /v1/liveness endpoint  [lightspeed_stack.app.endpoints.health:253]
 lightspeed-stack  | .140 INFO:     127.0.0.1:36138 - "GET /liveness HTTP/1.1" 200 OK
 lightspeed-stack  | .182 WARNING:  No-op authentication dependency is being used. The service is running in insecure mode intended solely for development purposes  [lightspeed_stack.authentication.noop:50]
 lightspeed-stack  | .182 INFO:     Response to /v1/liveness endpoint  [lightspeed_stack.app.endpoints.health:253]
 lightspeed-stack  | .182 INFO:     127.0.0.1:51870 - "GET /liveness HTTP/1.1" 200 OK
 lightspeed-stack  | .866 INFO:     Shutting down  [uvicorn.error:270]
 lightspeed-stack  | .966 INFO:     Waiting for application shutdown.  [uvicorn.error:67]
 lightspeed-stack  | .966 INFO:     App shutdown complete  [lightspeed_stack.app.main:150]
 lightspeed-stack  | .967 INFO:     Application shutdown complete.  [uvicorn.error:76]
 lightspeed-stack  | .967 INFO:     Finished server process [1]  [uvicorn.error:101]
 lightspeed-stack  | .967 INFO:     Lightspeed Core Stack finished  [lightspeed_stack.__main__:268]
 lightspeed-stack  | .153 INFO:     Lightspeed Core Stack startup  [lightspeed_stack.__main__:160]
 lightspeed-stack  | .156 INFO:     Configuration: name='Lightspeed Core Service (LCS)' service=ServiceConfiguration(host='0.0.0.0', port=8080, base_url=None, auth_enabled=False, workers=1, color_lo...

GitHub Actions: E2E Tests / E2E server mode _ ci _ group 3: LCORE-3141: Proper dependencies in documentation make targets

Conclusion: failure

View job details

pplication shutdown.  [uvicorn.error:67]
 lightspeed-stack  | .145 INFO:     App shutdown complete  [lightspeed_stack.app.main:150]
 lightspeed-stack  | .145 INFO:     Application shutdown complete.  [uvicorn.error:76]
 lightspeed-stack  | .145 INFO:     Finished server process [1]  [uvicorn.error:101]
 lightspeed-stack  | .146 INFO:     Lightspeed Core Stack finished  [lightspeed_stack.__main__:268]
 lightspeed-stack  | .554 INFO:     Lightspeed Core Stack startup  [lightspeed_stack.__main__:160]
 lightspeed-stack  | .557 INFO:     Configuration: name='Lightspeed Core Service (LCS)' service=ServiceConfiguration(host='0.0.0.0', port=8080, base_url=None, auth_enabled=False, workers=1, color_log=True, access_log=True, tls_config=TLSConfiguration(tls_certificate_path=None, tls_key_path=None, tls_key_***REDACTED_SECRET_ASSIGNMENT*** root_path='', cors=CORSConfiguration(allow_origins=['*'], allow_credentials=False, allow_methods=['*'], allow_headers=['*'])) llama_stack=LlamaStackConfiguration(url=AnyHttpUrl('http://llama-stack:8321/'), ***REDACTED_SECRET_ASSIGNMENT*** use_as_library_client=False, library_client_config_path=None, timeout=180, max_retries=5, retry_delay=2, allow_degraded_mode=False, config=None) user_data_collection=UserDataCollection(feedback_enabled=True, feedback_storage='/tmp/data/feedback', transcripts_enabled=True, transcripts_storage='/tmp/data/transcripts') database=DatabaseConfiguration(sqlite=SQLiteDatabaseConfiguration(db_path='/tmp/lightspeed-stack.db'), postgres=None) mcp_servers=[] authentication=AuthenticationConfiguration(module='noop', skip_tls_verification=False, skip_for_health_probes=False, skip_for_metrics=False, k8s_cluster_api=None, k8s_ca_cert_path=None, jwk_config=None, api_key_config=None, rh_identity_config=None, trusted_proxy_config=None) authorization=None customization=None inference=InferenceConfiguration(default_model='gpt-4o-mini', default_provider='openai', context_windows={}, providers=[], max_infer_iters=10, max_tool_...

GitHub Actions: E2E Tests / 0_E2E server mode _ ci _ group 1.txt: LCORE-3141: Proper dependencies in documentation make targets

Conclusion: failure

View job details

[36mGiven �[0m�[36mlightspeed-stack --migrate-config is run for the legacy migration fixture pair�[0m�[90m              # None�[0m
     �[36mAnd �[0m�[36mThe service uses the lightspeed-stack-unified-migrated.yaml configuration�[0m�[90m                     # None�[0m
     �[36mAnd �[0m�[36mLlama Stack is restarted�[0m�[90m                                                                      # None�[0m
     �[36mAnd �[0m�[36mLightspeed Stack is restarted�[0m�[90m                                                                 # None�[0m
     �[36mWhen �[0m�[36mI access endpoint "readiness" using HTTP GET method�[0m�[90m                                          # None�[0m
     �[36mThen �[0m�[36mThe status code of the response is 200�[0m�[90m                                                       # None�[0m
     �[36mWhen �[0m�[36mI use "query" to ask question�[0m�[90m                                                                # None�[0m
       """
       {"query": "Say hello", "model": "{MODEL}", "provider": "{PROVIDER}"}
       """
     �[36mThen �[0m�[36mThe status code of the response is 200�[0m�[90m                                                       # None�[0m
 `@e2e_group_2` `@skip`
 Feature: Unified mode configuration synthesis�[90m # tests/e2e/features/unified-mode-synthesis.feature:2�[0m
   `@e2e_group_2` `@skip`
   Feature: Unified mode configuration synthesis �[90m # tests/e2e/features/unified-mode-synthesis.feature:2�[0m
   Scenario: native_override replaces an overlapping scalar key �[90m                                            # tests/e2e/features/unified-mode-synthesis.feature:10�[0m
     �[36mGiven �[0m�[36mThe service is started locally�[0m�[90m                                                                   # None�[0m
     �[36mAnd �[0m�[36mThe system is in default state�[0m�[90m                                                                     # None�[0m
     �[36mAnd �[0m�[36mthe Lightspeed stack configuration directory is "tests/e2e/config...

GitHub Actions: E2E Tests / 1_E2E server mode _ ci _ group 3.txt: LCORE-3141: Proper dependencies in documentation make targets

Conclusion: failure

View job details

ion.feature:42�[0m
     �[36mGiven �[0m�[36mThe service is started locally�[0m�[90m                                                              # None�[0m
     �[36mAnd �[0m�[36mThe system is in default state�[0m�[90m                                                                # None�[0m
     �[36mAnd �[0m�[36mREST API service prefix is /v1�[0m�[90m                                                                # None�[0m
     �[36mAnd �[0m�[36mthe Lightspeed stack configuration directory is "tests/e2e/configuration/unified-mode"�[0m�[90m        # None�[0m
     �[36mGiven �[0m�[36mlightspeed-stack --migrate-config is run for the legacy migration fixture pair�[0m�[90m              # None�[0m
     �[36mAnd �[0m�[36mThe service uses the lightspeed-stack-unified-migrated.yaml configuration�[0m�[90m                     # None�[0m
     �[36mAnd �[0m�[36mLlama Stack is restarted�[0m�[90m                                                                      # None�[0m
     �[36mAnd �[0m�[36mLightspeed Stack is restarted�[0m�[90m                                                                 # None�[0m
     �[36mWhen �[0m�[36mI access endpoint "readiness" using HTTP GET method�[0m�[90m                                          # None�[0m
     �[36mThen �[0m�[36mThe status code of the response is 200�[0m�[90m                                                       # None�[0m
     �[36mWhen �[0m�[36mI use "query" to ask question�[0m�[90m                                                                # None�[0m
       """
       {"query": "Say hello", "model": "{MODEL}", "provider": "{PROVIDER}"}
       """
     �[36mThen �[0m�[36mThe status code of the response is 200�[0m�[90m                                                       # None�[0m
 `@e2e_group_2` `@skip`
 Feature: Unified mode configuration synthesis�[90m # tests/e2e/features/unified-mode-synthesis.feature:2�[0m
   `@e2e_group_2` `@skip`
   Feature: Unified mode configuration synthesis �[90m # tests/e2e/features/unified-...

GitHub Actions: E2E Tests / E2E server mode _ ci _ group 2: LCORE-3141: Proper dependencies in documentation make targets

Conclusion: failure

View job details

-stack  | .885 INFO:     Sentry DSN not configured, skipping initialization  [lightspeed_stack.sentry:80]
 lightspeed-stack  | .885 INFO:     Using Llama stack running as a service  [lightspeed_stack.client:122]
 lightspeed-stack  | .885 INFO:     Using timeout of 180 seconds for Llama Stack requests  [lightspeed_stack.client:123]
 lightspeed-stack  | INFO:httpx:HTTP Request: GET http://llama-stack:8321/v1/version "HTTP/1.1 200 OK"
 lightspeed-stack  | .066 INFO:     Correct Llama Stack version: 0.6.0  [lightspeed_stack.utils.llama_stack_version:130]
 lightspeed-stack  | .067 INFO:     Registering MCP servers  [lightspeed_stack.app.main:125]
 lightspeed-stack  | .067 INFO:     Setting up model metrics  [lightspeed_stack.metrics.utils:18]
 lightspeed-stack  | INFO:httpx:HTTP Request: GET http://llama-stack:8321/v1/models "HTTP/1.1 200 OK"
 lightspeed-stack  | .073 INFO:     Model metrics setup complete  [lightspeed_stack.metrics.utils:58]
 lightspeed-stack  | .073 INFO:     App startup complete  [lightspeed_stack.app.main:135]
 lightspeed-stack  | .073 INFO:     Initialize SQLite database  [lightspeed_stack.app.database:193]
 lightspeed-stack  | .094 INFO:     Application startup complete.  [uvicorn.error:62]
 lightspeed-stack  | .094 INFO:     Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)  [uvicorn.error:222]
 lightspeed-stack  | .007 WARNING:  No-op authentication dependency is being used. The service is running in insecure mode intended solely for development purposes  [lightspeed_stack.authentication.noop:50]
 lightspeed-stack  | .007 INFO:     Response to /v1/liveness endpoint  [lightspeed_stack.app.endpoints.health:253]
 lightspeed-stack  | .007 INFO:     127.0.0.1:41364 - "GET /liveness HTTP/1.1" 200 OK
 lightspeed-stack  | .412 INFO:     Shutting down  [uvicorn.error:270]
 lightspeed-stack  | .513 INFO:     Waiting for application shutdown.  [uvicorn.error:67]
 lightspeed-stack  | .513 INFO:     App shutdown complete  [lightspeed_stack.app....

GitHub Actions: E2E Tests / 3_E2E server mode _ ci _ group 2.txt: LCORE-3141: Proper dependencies in documentation make targets

Conclusion: failure

View job details

[0m
       """
       {"query": "Echo 'Hello World'. Use the load_skill tool to load the 'echo' skill.", "model": "{MODEL}", "provider": "{PROVIDER}"}
       """
     �[90mWhen �[0m�[90mI wait for the response to be completed�[0m�[90m                                        # tests/e2e/features/steps/llm_query_response.py:91�[0m
 �[2A    �[31mWhen �[0m�[31mI wait for the response to be completed�[0m�[90m                                        # tests/e2e/features/steps/llm_query_response.py:91�[0m
       Traceback (most recent call last):
         File "/home/runner/work/lightspeed-stack/lightspeed-stack/.venv/lib/python3.12/site-packages/behave/model.py", line 1991, in run
           match.run(runner.context)
         File "/home/runner/work/lightspeed-stack/lightspeed-stack/.venv/lib/python3.12/site-packages/behave/matchers.py", line 105, in run
           self.func(context, *args, **kwargs)
         File "tests/e2e/features/steps/llm_query_response.py", line 95, in wait_for_complete_response
           context.response.raise_for_status()
         File "/home/runner/work/lightspeed-stack/lightspeed-stack/.venv/lib/python3.12/site-packages/requests/models.py", line 1167, in raise_for_status
           raise HTTPError(http_error_msg, response=self)
       requests.exceptions.HTTPError: 429 Client Error: Too Many Requests for url: http://localhost:8080/v1/streaming_query
 AUTO-RETRY SCENARIO (attempt 3)
     �[36mThen �[0m�[36mThe status code of the response is 200�[0m�[90m                                         # None�[0m
     �[36mAnd �[0m�[36mThe body of the "tool_calls" field of the response is the following�[0m�[90m             # None�[0m
       """
       [
         {
           "name": "load_skill",
           "args": {
             "skill_name": "echo"
           },
           "type": "function_call"
         }
       ]
       """
     �[36mAnd �[0m�[36mThe body of the "tool_results" field of the response is the following�[0m�[90m           # None�[0m
    ...
🧰 Additional context used
📓 Path-based instructions (1)
**/*

📄 CodeRabbit inference engine (Custom checks)

**/*: Flag meaningful O(n^2)+ algorithms on non-trivial inputs, including handlers and Kubernetes list operations.
Flag N+1 patterns that list items and then query once per item, including Kubernetes API and database access.
Flag expensive work inside loops, including API calls, JSON parsing, and regex compilation.
Flag unbounded growth in caches, watchers, or buffers when eviction or limits are missing.
Flag missing pagination or limits on list operations and API endpoints.
Flag secrets or tokens logged in plaintext or hardcoded in source.
Flag API endpoints missing authentication or authorization.
Flag injection vulnerabilities, including SQL injection, command injection, and path traversal.
Flag sensitive data leaked in API responses, WebSocket messages, or logs.
Flag Kubernetes Secrets and Red Hat secrets missing OwnerReferences.

Files:

  • Makefile
🪛 checkmake (0.3.2)
Makefile

[warning] 202-202: Target "generate-documentation" should be declared PHONY.

(phonydeclared)

🪛 GitHub Actions: E2E Tests / 0_E2E server mode _ ci _ group 1.txt
Makefile

[error] 170-170: Command 'make test-e2e-tagged' failed with exit code 1; the CI process completed with exit code 2. Overall result: 42 scenarios failed.

🪛 GitHub Actions: E2E Tests / 1_E2E server mode _ ci _ group 3.txt
Makefile

[error] 170-170: The 'test-e2e-tagged' target failed: 37 scenarios failed. make exited with Error 1; the CI process completed with exit code 2.

🪛 GitHub Actions: E2E Tests / 2_E2E library mode _ ci _ group 1.txt
Makefile

[error] 170-170: make test-e2e-tagged failed; 26 scenarios failed and the process exited with code 2.

🪛 GitHub Actions: E2E Tests / 3_E2E server mode _ ci _ group 2.txt
Makefile

[error] 170-170: The test-e2e-tagged target failed; 33 scenarios failed and 14 errored. make exited with code 1, causing the CI process to exit with code 2.

🪛 GitHub Actions: E2E Tests / 4_E2E library mode _ ci _ group 3.txt
Makefile

[error] 170-170: The 'test-e2e-tagged' make target failed: 30 scenarios failed and make exited with Error 1. The CI process completed with exit code 2.

🪛 GitHub Actions: E2E Tests / 5_E2E library mode _ ci _ group 2.txt
Makefile

[error] 170-170: The test-e2e-tagged target failed after 32 failed and 14 errored scenarios. make exited with status 1, and the CI process completed with exit code 2.

🪛 GitHub Actions: E2E Tests / E2E library mode _ ci _ group 2
Makefile

[error] 170-170: The test-e2e-tagged target failed after 32 failed and 14 errored scenarios. make exited with code 1, and the CI process exited with code 2.

🪛 GitHub Actions: E2E Tests / E2E server mode _ ci _ group 1
Makefile

[error] 170-170: Command 'make test-e2e-tagged' failed: 7 features and 42 scenarios failed. The make target exited with status 1, and the CI process completed with exit code 2.

🪛 GitHub Actions: E2E Tests / E2E server mode _ ci _ group 3
Makefile

[error] 170-170: The 'test-e2e-tagged' target failed: 5 features passed, 6 failed; 86 scenarios passed, 37 failed. make exited with error 1, and the CI process completed with exit code 2.

🔇 Additional comments (3)
Makefile (3)

28-30: LGTM!


202-202: LGTM!


234-236: LGTM!

@tisnik
tisnik merged commit 21b9aa5 into lightspeed-core:main Jul 31, 2026
24 of 32 checks passed
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.

1 participant