From b6f0d5c126391028abdae0a671c73e6be801a154 Mon Sep 17 00:00:00 2001 From: Alfred Date: Wed, 26 Aug 2026 04:21:02 +0000 Subject: [PATCH 1/2] fix(ci): lowercase GHCR image name for buildx tag validation Docker/GHCR require lowercase repository names. github.repository (SabaTech-dev/Alfred-Mission-Control) broke 'docker buildx build' with 'invalid tag: repository name must be lowercase', failing the SLSA Build & Attest job on every push to main. Introduce workflow-level env.IMAGE_NAME (canonical lowercase artifact name) and use it consistently for: build tags, attestation subject-name and the verification summary (which also referenced a never-pushed 'sha-' prefixed tag). --- .github/workflows/slsa-provenance.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/slsa-provenance.yml b/.github/workflows/slsa-provenance.yml index 5733050b..1876b604 100644 --- a/.github/workflows/slsa-provenance.yml +++ b/.github/workflows/slsa-provenance.yml @@ -22,6 +22,12 @@ concurrency: group: slsa-${{ github.ref }} cancel-in-progress: true +# GHCR/Docker exigen repositorios en lowercase; github.repository contiene +# mayúsculas (SabaTech-dev/Alfred-Mission-Control) y buildx rechaza el tag. +# Nombre canónico fijo del artefacto — usar SIEMPRE env.IMAGE_NAME. +env: + IMAGE_NAME: ghcr.io/sabatech-dev/alfred-mission-control + jobs: provenance: name: Build & Attest @@ -48,14 +54,14 @@ jobs: with: context: . push: true - tags: ghcr.io/${{ github.repository }}:${{ github.sha }} + tags: ${{ env.IMAGE_NAME }}:${{ github.sha }} provenance: true sbom: true - name: Generate build provenance attestation uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c with: - subject-name: ghcr.io/${{ github.repository }} + subject-name: ${{ env.IMAGE_NAME }} subject-digest: ${{ steps.build.outputs.digest }} push-to-registry: true @@ -73,5 +79,5 @@ jobs: echo "" >> $GITHUB_STEP_SUMMARY echo "**Verification command:**" >> $GITHUB_STEP_SUMMARY echo '```bash' >> $GITHUB_STEP_SUMMARY - echo "docker buildx imagetools inspect ghcr.io/${{ github.repository }}:sha-${{ github.sha }}" >> $GITHUB_STEP_SUMMARY + echo "docker buildx imagetools inspect ${{ env.IMAGE_NAME }}:${{ github.sha }}" >> $GITHUB_STEP_SUMMARY echo '```' >> $GITHUB_STEP_SUMMARY From 119c2bffe8eb54f7ea7aa9c3d084a0f5e86f7a31 Mon Sep 17 00:00:00 2001 From: Joker Date: Fri, 4 Sep 2026 18:14:57 +0000 Subject: [PATCH 2/2] fix(health): drop stale ollama check, add llama.cpp rerank and embed-memory TCP checks Ollama was retired on 2026-08-28; the running build still probed it and kept the dashboard permanently degraded. This adds TCP checks for the llama.cpp reranker (:8005) and memory embeddings (:8006) that replaced it. --- src/app/(dashboard)/admin/system-health/page.tsx | 2 +- src/app/api/system/monitor/route.ts | 4 +++- src/lib/stack-health.test.ts | 2 +- src/lib/stack-health.ts | 8 +++++--- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/app/(dashboard)/admin/system-health/page.tsx b/src/app/(dashboard)/admin/system-health/page.tsx index 871507b2..7e4bc607 100644 --- a/src/app/(dashboard)/admin/system-health/page.tsx +++ b/src/app/(dashboard)/admin/system-health/page.tsx @@ -22,7 +22,7 @@ const serviceCategories: Record = { "alfred-mc": "core", "openclaw-gateway": "core", "postgresql": "core", - "ollama": "llm", + "llama.cpp-rerank": "llm", "llama.cpp-gpu": "llm", "llama.cpp-embed": "llm", "coolify": "dev", diff --git a/src/app/api/system/monitor/route.ts b/src/app/api/system/monitor/route.ts index 8a1d980b..e8ee3f59 100644 --- a/src/app/api/system/monitor/route.ts +++ b/src/app/api/system/monitor/route.ts @@ -17,7 +17,9 @@ const PROBE_TIMEOUT_MS = 5000; const SYSTEM_SERVICES = [ "alfred-mission-control", "docker", - "ollama", + "llama-main", + "llama-embeddings", + "llama-rerank", "tailscaled", "fail2ban", "redis-server", diff --git a/src/lib/stack-health.test.ts b/src/lib/stack-health.test.ts index b791af9a..50f1bc73 100644 --- a/src/lib/stack-health.test.ts +++ b/src/lib/stack-health.test.ts @@ -15,7 +15,7 @@ import { describe, it, expect, vi, beforeEach } from "vitest"; const mockChecks = { gateway: { name: "openclaw-gateway", status: "up" as const, details: "OK" }, postgresql: { name: "postgresql", status: "up" as const, details: "OK" }, - ollama: { name: "ollama", status: "up" as const, details: "OK" }, + llamaRerank: { name: "llama.cpp-rerank", status: "up" as const, details: "OK" }, coolify: { name: "coolify", status: "up" as const, details: "OK" }, browserless: { name: "browserless", status: "up" as const, details: "OK" }, langfuse: { name: "langfuse", status: "up" as const, details: "OK" }, diff --git a/src/lib/stack-health.ts b/src/lib/stack-health.ts index 989236e6..becc02b2 100644 --- a/src/lib/stack-health.ts +++ b/src/lib/stack-health.ts @@ -236,16 +236,17 @@ async function checkHttpService(name: string, url: string, port: number): Promis export async function collectStackServiceChecks(): Promise { const dockerContainers = parseDockerContainers(); - const [gateway, postgresql, ollama, coolify, browserless, langfuse, qmd, llamaGpu, llamaEmbed, searxng, engram, prAgent] = await Promise.all([ + const [gateway, postgresql, llamaRerank, coolify, browserless, langfuse, qmd, llamaGpu, llamaEmbed, llamaEmbedMem, searxng, engram, prAgent] = await Promise.all([ checkGatewayService(), checkPostgresService(dockerContainers), - checkTcpService("ollama", 11434), + checkTcpService("llama.cpp-rerank", 8005), checkTcpService("coolify", 8000), checkHttpService("browserless", "http://127.0.0.1:3002/pressure", 3002), checkHttpService("langfuse", "http://127.0.0.1:3001", 3001), checkTcpService("qmd-mcp", 8181), checkTcpService("llama.cpp-gpu", 8001), checkTcpService("llama.cpp-embed", 8002), + checkTcpService("llama.cpp-embed-memory", 8006), checkHttpService("searxng", "http://127.0.0.1:8081", 8081), checkTcpService("engram", 7437), checkTcpService("pr-agent", 3003), @@ -255,13 +256,14 @@ export async function collectStackServiceChecks(): Promise { name: "alfred-mc", status: "up", details: "API route responding" }, gateway, postgresql, - ollama, + llamaRerank, coolify, browserless, langfuse, qmd, llamaGpu, llamaEmbed, + llamaEmbedMem, searxng, engram, prAgent,