Skip to content

test(e2e): migrate Ollama auth proxy to vitest - #5551

Merged
cv merged 3 commits into
mainfrom
e2e-migrate/test-ollama-auth-proxy
Jun 19, 2026
Merged

test(e2e): migrate Ollama auth proxy to vitest#5551
cv merged 3 commits into
mainfrom
e2e-migrate/test-ollama-auth-proxy

Conversation

@cv

@cv cv commented Jun 19, 2026

Copy link
Copy Markdown
Collaborator

Summary

Migrates test/e2e/test-ollama-auth-proxy-e2e.sh into a typed live Vitest scenario. The new coverage preserves the host-side proxy contract with real Ollama, the real Node auth proxy, authenticated and unauthenticated curl probes, inference calls, token persistence, restart recovery, optional Docker reachability, and token-divergence repair.

Related Issue

Refs #5098

Changes

  • Add test/e2e-scenario/live/ollama-auth-proxy.test.ts with typed process cleanup, artifact logs, and token redaction.
  • Wire ollama-auth-proxy-vitest into .github/workflows/e2e-vitest-scenarios.yaml as a free-standing dispatchable Vitest job.
  • Preserve legacy shell deletion and existing shell workflow wiring for Phase 11 cleanup per Epic: Migrate legacy bash E2E into the Vitest E2E system #5098 migration governance.

Type of Change

  • Code change (feature, bug fix, or refactor)
  • Code change with doc updates
  • Doc only (prose changes, no code sample modifications)
  • Doc only (includes code sample changes)

Verification

  • PR description includes the DCO sign-off declaration and every commit appears as Verified in GitHub
  • Git hooks passed during commit and push, or npx prek run --from-ref main --to-ref HEAD passes
  • Targeted tests pass for changed behavior
  • Full npm test passes (broad runtime changes only)
  • Tests added or updated for new or changed behavior
  • No secrets, API keys, or credentials committed
  • Docs updated for user-facing behavior changes
  • npm run docs builds without warnings (doc changes only)
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

Targeted commands run:

  • npx biome check --write test/e2e-scenario/live/ollama-auth-proxy.test.ts
  • NEMOCLAW_RUN_E2E_SCENARIOS=1 npx vitest run --project e2e-scenarios-live test/e2e-scenario/live/ollama-auth-proxy.test.ts -t __compile_only_nomatch__ --silent=false --reporter=default --passWithNoTests
  • npx vitest run --project e2e-vitest-support test/e2e-scenario/support-tests/e2e-scenarios-workflow.test.ts
  • npx tsx scripts/check-test-file-size-budget.ts test/e2e-scenario/live/ollama-auth-proxy.test.ts
  • npx tsc --noEmit --strict --moduleResolution bundler --module preserve --target ES2022 --types node --allowImportingTsExtensions test/e2e-scenario/live/ollama-auth-proxy.test.ts
  • git diff --check

Signed-off-by: Carlos Villela cvillela@nvidia.com

Summary by CodeRabbit

  • Tests

    • Added a live end-to-end Vitest scenario for the Ollama authentication proxy, covering authentication enforcement (401 on invalid/missing tokens), token persistence (including file permissions), proxy restart/recovery, and model access behavior before and after rotating the persisted token.
  • CI/CD

    • Added a dedicated CI job to run the new scenario and publish its Vitest artifacts.
    • Updated PR result aggregation so the new scenario appears in the Vitest scenario results table.

Signed-off-by: Carlos Villela <cvillela@nvidia.com>
@cv cv self-assigned this Jun 19, 2026
@github-code-quality

github-code-quality Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage in the e2e-migrate/test-oll... branch is 96%. Coverage data for the main branch is not yet available.

Show a code coverage summary of the most covered files.
File main e2e-migrate/test-oll... 4396d63 +/-
nemoclaw/src/se...cret-scanner.ts 100%
nemoclaw/src/commands/slash.ts 100%
nemoclaw/src/li...bprocess-env.ts 100%
nemoclaw/src/bl...eprint/state.ts 98%
nemoclaw/src/onboard/config.ts 98%
nemoclaw/src/bl...int/snapshot.ts 97%
nemoclaw/src/bl...print/runner.ts 95%
nemoclaw/src/co...ration-state.ts 94%
nemoclaw/src/bl...ate-networks.ts 94%
nemoclaw/src/index.ts 94%

TypeScript / code-coverage/cli

The overall coverage in the e2e-migrate/test-oll... branch is 46%. Coverage data for the main branch is not yet available.

Show a code coverage summary of the most covered files.
File main e2e-migrate/test-oll... 4396d63 +/-
src/lib/state/o...oard-session.ts 90%
src/lib/inference/local.ts 76%
src/lib/sandbox/config.ts 72%
src/lib/actions...dbox/rebuild.ts 67%
src/lib/onboard/preflight.ts 64%
src/lib/actions...licy-channel.ts 56%
src/lib/state/sandbox.ts 55%
src/lib/onboard...er-gpu-patch.ts 50%
src/lib/policy/index.ts 49%
src/lib/onboard.ts 18%

Updated June 19, 2026 21:26 UTC
Code Coverage is in Public Preview. Learn more and provide us with your feedback.

@github-actions

github-actions Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

E2E Advisor Recommendation

Required E2E: None
Optional E2E: ollama-auth-proxy-vitest

Dispatch hint: ollama-auth-proxy-vitest

Workflow run

Full advisor summary

E2E Recommendation Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required E2E

  • None. No required E2E is needed because the PR only adds/modifies E2E test and workflow coverage; it does not change installer, onboarding, sandbox lifecycle, credentials, security boundaries, network policy, inference routing, deployment, or assistant runtime behavior.

Optional E2E

  • ollama-auth-proxy-vitest (medium): Useful to validate the newly added workflow job and live scenario test, but not merge-blocking because the PR changes only E2E test/workflow definitions and does not affect runtime user flows.

New E2E recommendations

  • None.

Dispatch hint

  • Workflow: .github/workflows/e2e-vitest-scenarios.yaml
  • jobs input: ollama-auth-proxy-vitest

@github-actions

github-actions Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Recommendation

Required Vitest E2E scenarios: ollama-auth-proxy-vitest
Optional Vitest E2E scenarios: None

Dispatch required Vitest E2E scenarios:

  • gh workflow run e2e-vitest-scenarios.yaml --ref <pr-head-ref> --field jobs=ollama-auth-proxy-vitest

Workflow run

Full Vitest E2E advisor summary

Vitest E2E Scenario Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required Vitest E2E scenarios

  • ollama-auth-proxy-vitest: Focused free-standing Vitest job wired for changed live test test/e2e-scenario/live/ollama-auth-proxy.test.ts.
    • Dispatch: gh workflow run e2e-vitest-scenarios.yaml --ref <pr-head-ref> --field jobs=ollama-auth-proxy-vitest

Optional Vitest E2E scenarios

  • None.

Relevant changed files

  • .github/workflows/e2e-vitest-scenarios.yaml
  • test/e2e-scenario/live/ollama-auth-proxy.test.ts

@coderabbitai

coderabbitai Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: d1182704-6a35-47df-8194-ae5a4c79bda7

📥 Commits

Reviewing files that changed from the base of the PR and between 1a95efc and 4396d63.

📒 Files selected for processing (1)
  • .github/workflows/e2e-vitest-scenarios.yaml
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/e2e-vitest-scenarios.yaml

📝 Walkthrough

Walkthrough

Adds a live end-to-end Vitest test file (test/e2e-scenario/live/ollama-auth-proxy.test.ts) that exercises the Ollama auth proxy's token enforcement, inference proxying, restart/recovery, and divergent-token repair. A new ollama-auth-proxy-vitest CI job is wired into .github/workflows/e2e-vitest-scenarios.yaml with artifact upload and inclusion in the report-to-pr aggregation.

Changes

Ollama Auth Proxy E2E Test and CI Integration

Layer / File(s) Summary
Test helpers and utilities
test/e2e-scenario/live/ollama-auth-proxy.test.ts
Provides helper functions for port parsing, random token generation, process lifecycle management with SIGTERM/SIGKILL fallback, logged spawning, curl-based HTTP status and authenticated body probing, response-content extraction, and token-file reading with permission verification.
Live scenario: token enforcement, inference, restart, Docker, and token repair
test/e2e-scenario/live/ollama-auth-proxy.test.ts
Implements the test.skipIf-guarded Vitest test that starts real ollama serve and ollama-auth-proxy.js, writes token to 0600-mode file, validates bearer-token enforcement (401 on unauthenticated/wrong-token requests), confirms OpenAI-compatible chat and native Ollama inference, verifies persisted token file mode and contents, tests proxy restart/recovery, optionally probes Docker container reachability, writes divergent token, verifies old token rejection and divergent token acceptance, restarts proxy with divergent token, and confirms successful model responses.
CI job definition and PR result aggregation
.github/workflows/e2e-vitest-scenarios.yaml
Adds dispatch-gated ollama-auth-proxy-vitest job (installs deps, runs test, uploads artifacts to e2e-artifacts/vitest/ollama-auth-proxy/) and includes it in report-to-pr.needs for PR Vitest results table.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related issues

Possibly related PRs

  • NVIDIA/NemoClaw#5495: Adds live Vitest E2E coverage for the Ollama auth-proxy with persistent token-file creation/mode checks and authentication status validation (401 vs 200) against proxy endpoints.

Suggested labels

area: e2e, chore

🐇 A proxy with tokens, oh what a test!
It starts up Ollama and puts auth to the test,
With curl and with Docker, it probes every route,
Then breaks the token just to see how it bounces out.
Restart, recover — the proxy holds strong,
This bunny hops happy, nothing went wrong! 🎉

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and accurately summarizes the main change: migrating an Ollama auth proxy test from shell scripts to Vitest/TypeScript, which is the core objective of the PR.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch e2e-migrate/test-ollama-auth-proxy

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

Comment thread test/e2e-scenario/live/ollama-auth-proxy.test.ts Fixed
Comment thread test/e2e-scenario/live/ollama-auth-proxy.test.ts Fixed
Comment thread test/e2e-scenario/live/ollama-auth-proxy.test.ts Fixed
@github-actions

github-actions Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor

Findings: 0 needs attention, 3 worth checking, 0 nice ideas
Since last review: 0 prior items resolved, 2 still apply, 0 new items found

Review findings

🛠️ Needs attention

  • None.

🔎 Worth checking

  • Source-of-truth review needed: Ollama installation fallback in live test: The advisor marked localized patch analysis as needs_followup.
    • Recommendation: Identify the invalid state, source boundary, source-fix constraint, regression test, and removal condition before merging the localized behavior.
    • Evidence: `command -v ollama` is followed by `curl -fsSL https://ollama.com/install.sh | sh` with a comment about the legacy official installer boundary.
  • Harden or explicitly accept the live installer, Docker image, and raw spawn trust boundaries (test/e2e-scenario/live/ollama-auth-proxy.test.ts:227): This live scenario can execute `curl -fsSL https://ollama.com/install.sh | sh` when Ollama is absent and later pulls `curlimages/curl:8.10.1` by mutable tag for Docker reachability probes. The workflow job lowers impact by not passing GitHub/provider/Docker secrets, using SHA-pinned actions, `persist-credentials: false`, and `npm ci --ignore-scripts`; however, the installer remains unauthenticated remote code execution on the runner and the probe image can drift. The helper `spawnLogged` also bypasses the fixture command boundary by inheriting `process.env` and writing raw child stdout/stderr to artifacts; that appears low-impact in this no-secret job, but it is weaker than nearby redacted `host.command` probes.
    • Recommendation: Prefer a verified or pinned Ollama installation path and digest-pin the curl image where practical. If this live E2E intentionally accepts those upstream trust boundaries, keep that acceptance explicit near both the installer and Docker image probe, and consider using the fixture child-env/redaction boundary for spawned long-running processes so future workflow changes do not accidentally add secrets or stronger trust assumptions.
    • Evidence: The test runs `bash -lc "curl -fsSL https://ollama.com/install.sh | sh"` when `command -v ollama` fails, uses `curlimages/curl:8.10.1` without a digest in both Docker probes, and `spawnLogged` spawns children with `env: { ...process.env, ...env }` and direct file descriptors. The new workflow job does not pass `${{ secrets.* }}` and checkout uses `persist-credentials: false`.
  • Source-of-truth review still needed for the Ollama installation fallback (test/e2e-scenario/live/ollama-auth-proxy.test.ts:224): The localized fallback for a missing `ollama` binary identifies the immediate invalid state and says it mirrors the legacy installer path, but it still does not document why the runner/source environment cannot provide a pinned Ollama binary for this migration, what regression guard proves that source decision, or when the workaround can be removed. Because the fallback is also the remote-installer trust boundary, the source-of-truth gap should be resolved or explicitly accepted with the security tradeoff.
    • Recommendation: Document the invalid state, source boundary, source-fix constraint, regression evidence, and removal condition for this fallback. Alternatively, move the setup to a pinned/verified source so the invalid state is impossible in this scenario.
    • Evidence: The test probes `command -v ollama` and, if missing, runs the official installer. The nearby comment says the live E2E intentionally mirrors the legacy user path and exercises the official Ollama installer boundary, but does not state a removal condition or why the source environment cannot be fixed in this PR.

🌱 Nice ideas

  • None.
Consider writing more tests for
  • **Runtime validation** — Validate `scenarios=ollama-auth-proxy` maps through the free-standing workflow inventory to only `ollama-auth-proxy-vitest`.. The changed behavior depends on workflow selector inventory, live host processes, fixed ports, an Ollama model pull/inference, Docker host-gateway networking, token persistence, and process restart behavior. Static review and compile-only checks are useful but cannot fully validate those runtime boundaries.
  • **Runtime validation** — Validate `jobs=ollama-auth-proxy-vitest` is accepted by the generated free-standing workflow inventory and produces an empty registry matrix.. The changed behavior depends on workflow selector inventory, live host processes, fixed ports, an Ollama model pull/inference, Docker host-gateway networking, token persistence, and process restart behavior. Static review and compile-only checks are useful but cannot fully validate those runtime boundaries.
  • **Runtime validation** — Run the live scenario with Docker available and verify container-to-proxy returns a three-digit HTTP status while container-to-backend-Ollama fails.. The changed behavior depends on workflow selector inventory, live host processes, fixed ports, an Ollama model pull/inference, Docker host-gateway networking, token persistence, and process restart behavior. Static review and compile-only checks are useful but cannot fully validate those runtime boundaries.
  • **Runtime validation** — Exercise token divergence end-to-end by proving the old token is accepted and the file token is rejected before restart, then proving the file token is accepted after restart.. The changed behavior depends on workflow selector inventory, live host processes, fixed ports, an Ollama model pull/inference, Docker host-gateway networking, token persistence, and process restart behavior. Static review and compile-only checks are useful but cannot fully validate those runtime boundaries.
  • **Runtime validation** — Add the exact legacy unauthenticated `POST /api/tags` assertion and expect HTTP 401.. The changed behavior depends on workflow selector inventory, live host processes, fixed ports, an Ollama model pull/inference, Docker host-gateway networking, token persistence, and process restart behavior. Static review and compile-only checks are useful but cannot fully validate those runtime boundaries.
  • **Acceptance clause:** Refs Epic: Migrate legacy bash E2E into the Vitest E2E system #5098 — add test evidence or identify existing coverage. The deterministic validation context did not include linked issue Epic: Migrate legacy bash E2E into the Vitest E2E system #5098 body or comments (`linkedIssues: []`), so no literal issue acceptance clauses were available to verify. The diff preserves the legacy shell file and adds the Vitest migration plus workflow job, matching the PR-provided reference only as untrusted context.
  • **Ollama installation fallback in live test** — The scenario probes `command -v ollama`, runs the installer only when absent, and asserts the install command exits zero before starting Ollama. This proves the fallback path works, not that the source invalid state cannot regress.. `command -v ollama` is followed by `curl -fsSL https://ollama.com/install.sh | sh` with a comment about the legacy official installer boundary.
Since last review details

Current findings:

  • Source-of-truth review needed: Ollama installation fallback in live test: The advisor marked localized patch analysis as needs_followup.
    • Recommendation: Identify the invalid state, source boundary, source-fix constraint, regression test, and removal condition before merging the localized behavior.
    • Evidence: `command -v ollama` is followed by `curl -fsSL https://ollama.com/install.sh | sh` with a comment about the legacy official installer boundary.
  • Harden or explicitly accept the live installer, Docker image, and raw spawn trust boundaries (test/e2e-scenario/live/ollama-auth-proxy.test.ts:227): This live scenario can execute `curl -fsSL https://ollama.com/install.sh | sh` when Ollama is absent and later pulls `curlimages/curl:8.10.1` by mutable tag for Docker reachability probes. The workflow job lowers impact by not passing GitHub/provider/Docker secrets, using SHA-pinned actions, `persist-credentials: false`, and `npm ci --ignore-scripts`; however, the installer remains unauthenticated remote code execution on the runner and the probe image can drift. The helper `spawnLogged` also bypasses the fixture command boundary by inheriting `process.env` and writing raw child stdout/stderr to artifacts; that appears low-impact in this no-secret job, but it is weaker than nearby redacted `host.command` probes.
    • Recommendation: Prefer a verified or pinned Ollama installation path and digest-pin the curl image where practical. If this live E2E intentionally accepts those upstream trust boundaries, keep that acceptance explicit near both the installer and Docker image probe, and consider using the fixture child-env/redaction boundary for spawned long-running processes so future workflow changes do not accidentally add secrets or stronger trust assumptions.
    • Evidence: The test runs `bash -lc "curl -fsSL https://ollama.com/install.sh | sh"` when `command -v ollama` fails, uses `curlimages/curl:8.10.1` without a digest in both Docker probes, and `spawnLogged` spawns children with `env: { ...process.env, ...env }` and direct file descriptors. The new workflow job does not pass `${{ secrets.* }}` and checkout uses `persist-credentials: false`.
  • Source-of-truth review still needed for the Ollama installation fallback (test/e2e-scenario/live/ollama-auth-proxy.test.ts:224): The localized fallback for a missing `ollama` binary identifies the immediate invalid state and says it mirrors the legacy installer path, but it still does not document why the runner/source environment cannot provide a pinned Ollama binary for this migration, what regression guard proves that source decision, or when the workaround can be removed. Because the fallback is also the remote-installer trust boundary, the source-of-truth gap should be resolved or explicitly accepted with the security tradeoff.
    • Recommendation: Document the invalid state, source boundary, source-fix constraint, regression evidence, and removal condition for this fallback. Alternatively, move the setup to a pinned/verified source so the invalid state is impossible in this scenario.
    • Evidence: The test probes `command -v ollama` and, if missing, runs the official installer. The nearby comment says the live E2E intentionally mirrors the legacy user path and exercises the official Ollama installer boundary, but does not state a removal condition or why the source environment cannot be fixed in this PR.

Workflow run details

This is an automated advisory review. A human maintainer must make the final merge decision.

@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.

🧹 Nitpick comments (1)
test/e2e-scenario/live/ollama-auth-proxy.test.ts (1)

76-91: 💤 Low value

Potential file descriptor leak on spawn failure.

If spawn fails (e.g., command not found), the error event fires but exit may not, leaving out open. Consider closing the fd in an error handler or using a finally-style cleanup.

♻️ Suggested improvement
 function spawnLogged(
   command: string,
   args: string[],
   logPath: string,
   env: NodeJS.ProcessEnv,
 ): ChildProcess {
   fs.mkdirSync(path.dirname(logPath), { recursive: true });
   const out = fs.openSync(logPath, "a");
   const child = spawn(command, args, {
     cwd: REPO_ROOT,
     env: { ...process.env, ...env },
     stdio: ["ignore", out, out],
   });
-  child.once("exit", () => fs.closeSync(out));
+  const closeFd = () => {
+    try { fs.closeSync(out); } catch { /* already closed */ }
+  };
+  child.once("exit", closeFd);
+  child.once("error", closeFd);
   return child;
 }
🤖 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 `@test/e2e-scenario/live/ollama-auth-proxy.test.ts` around lines 76 - 91, The
spawnLogged function has a potential file descriptor leak because the file
descriptor cleanup happens only in the exit event handler, but if spawn fails
(e.g., command not found), the error event fires instead and the exit handler
may never be called, leaving the file descriptor open. Add an error event
handler to the child process that also calls fs.closeSync(out) to ensure the
file descriptor is closed in both success and failure scenarios. Reference the
child.once("exit", ...) call as a model and add a similar child.once("error",
...) handler immediately after it that performs the same cleanup.
🤖 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.

Nitpick comments:
In `@test/e2e-scenario/live/ollama-auth-proxy.test.ts`:
- Around line 76-91: The spawnLogged function has a potential file descriptor
leak because the file descriptor cleanup happens only in the exit event handler,
but if spawn fails (e.g., command not found), the error event fires instead and
the exit handler may never be called, leaving the file descriptor open. Add an
error event handler to the child process that also calls fs.closeSync(out) to
ensure the file descriptor is closed in both success and failure scenarios.
Reference the child.once("exit", ...) call as a model and add a similar
child.once("error", ...) handler immediately after it that performs the same
cleanup.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 72240963-0c62-4e30-82a8-ad27853d9a77

📥 Commits

Reviewing files that changed from the base of the PR and between 9d4d1f5 and 5b17bcb.

📒 Files selected for processing (2)
  • .github/workflows/e2e-vitest-scenarios.yaml
  • test/e2e-scenario/live/ollama-auth-proxy.test.ts

Signed-off-by: Carlos Villela <cvillela@nvidia.com>
@cv cv added the v0.0.66 label Jun 19, 2026
@cv cv linked an issue Jun 19, 2026 that may be closed by this pull request
79 tasks
…ma-auth-proxy

Signed-off-by: Carlos Villela <cvillela@nvidia.com>
@cv
cv merged commit 4d33291 into main Jun 19, 2026
44 checks passed
@cv
cv deleted the e2e-migrate/test-ollama-auth-proxy branch June 19, 2026 21:36
@wscurran wscurran added area: ci CI workflows, checks, release automation, or GitHub Actions area: e2e End-to-end tests, nightly failures, or validation infrastructure chore Build, CI, dependency, or tooling maintenance provider: ollama Ollama local model provider behavior labels Aug 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ci CI workflows, checks, release automation, or GitHub Actions area: e2e End-to-end tests, nightly failures, or validation infrastructure chore Build, CI, dependency, or tooling maintenance provider: ollama Ollama local model provider behavior

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants