-
Notifications
You must be signed in to change notification settings - Fork 1
fix(ghcr): close 4 missing image gaps + targeted local build targets #822
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -1,7 +1,34 @@ | ||||||
|
|
||||||
| # PMOVES v5 • NEXT_STEPS | ||||||
| Note: Consolidated plan index at pmoves/docs/PMOVES.AI PLANS/README_DOCS_INDEX.md. | ||||||
| _Last updated: 2026-03-06_ | ||||||
| _Last updated: 2026-03-07_ | ||||||
|
|
||||||
| ### Latest changes (Mar 7, 2026) | ||||||
| - Merge wave completed on `main`: 8 PRs merged in 3 batches | ||||||
| - Batch 1: `#814` (UI build fix), `#815` (smoke Supabase discovery), `#816` (healthcheck stability), `#817` (CI runner alignment), `#819` (DoX submodule bump) | ||||||
| - Batch 2: `#818` (model fabric + coding-plan wiring — rebased after 8 CodeRabbit comments) | ||||||
| - Batch 3: `#820` (distributed topology docs/examples), `#821` (chrome extension + 9 security fixes) | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Capitalize "Chrome" as a proper noun. Static analysis correctly flags that "chrome" should be "Chrome" when referring to Google Chrome software. Proposed fix- - Batch 3: `#820` (distributed topology docs/examples), `#821` (chrome extension + 9 security fixes)
+ - Batch 3: `#820` (distributed topology docs/examples), `#821` (Chrome extension + 9 security fixes)📝 Committable suggestion
Suggested change
🧰 Tools🪛 LanguageTool[uncategorized] ~10-~10: The proper noun “Chrome” (= software from Google) needs to be capitalized. (GOOGLE_PRODUCTS) 🤖 Prompt for AI Agents |
||||||
| - Chrome extension security hardening (`#821`): | ||||||
| - auth credentials moved from `chrome.storage.sync` to `session` (memory-only) | ||||||
| - XSS eliminated in options page (innerHTML → createElement) | ||||||
| - mock server hardened (method allowlist, pathname parsing) | ||||||
| - `synthesizeAudio` timeout added (AbortController) | ||||||
| - processing status auto-cleanup (5min TTL) | ||||||
| - config race condition fixed (configReady promise) | ||||||
| - storage write serialization (promise queue) | ||||||
| - CSP added to manifest.json | ||||||
| - Distributed deployment documentation landed (`#820`): | ||||||
| - topology visualization with ASCII architecture diagrams | ||||||
| - example configs for local-network, Tailscale, and VPS deployments | ||||||
| - env.shared.example expanded with distributed config vars | ||||||
| - GHCR matrix gap analysis completed: | ||||||
| - 4 compose-referenced images lack CI build definitions: `a2ui-nats-bridge`, `llama-throughput-lab`, `session-context-worker`, `tokenism-ui` | ||||||
| - `ultimate-tts-studio` is in GHCR (manually pushed) but has no automated CI build | ||||||
| - `integrations-ghcr.matrix.json` covers 10 of 24 `images.yaml` entries | ||||||
|
Comment on lines
+24
to
+27
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Verify gap analysis accuracy after this PR lands. The GHCR gap analysis section states that 4 images "lack CI build definitions" and the matrix "covers 10 of 24" entries. However, this PR adds these 4 images to Consider updating the narrative to reflect the post-merge state, or clarify this describes the pre-fix baseline. As per coding guidelines, keep status claims aligned with evidence. 🤖 Prompt for AI Agents |
||||||
| - Live backlog snapshot: | ||||||
| - Open PRs: `0` | ||||||
| - Dependabot alerts: `1` (`1 medium`) | ||||||
| - Code scanning alerts: `0` | ||||||
|
|
||||||
| ### Latest changes (Mar 6, 2026) | ||||||
| - Merge queue closeout completed on `main`: | ||||||
|
|
||||||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -1,11 +1,15 @@ | ||||||
| # PMOVES v5 • ROADMAP | ||||||
| Last updated: 2026-03-06 | ||||||
| Last updated: 2026-03-07 | ||||||
|
|
||||||
| ## Vision | ||||||
| A production-ready, self-hostable orchestration mesh for creative + agent workloads across GPU boxes and Jetsons: **hybrid Hi‑RAG**, **Supabase Studio**, **n8n orchestration**, **Jellyfin publishing**, and **graph-aware retrieval**. | ||||||
|
|
||||||
| ## Audit Snapshot (2026-03-06) | ||||||
| ## Audit Snapshot (2026-03-07) | ||||||
|
|
||||||
| - March 7 merge wave completed on `main`: `#814`, `#815`, `#816`, `#817`, `#818`, `#819`, `#820`, `#821` (8 PRs, 3 batches). | ||||||
| - Chrome extension security hardening landed in `#821`: 9 CodeRabbit review items addressed (auth storage isolation, XSS remediation, mock server hardening, timeout guards, state management fixes, CSP). | ||||||
| - Distributed topology documentation + examples landed in `#820`. | ||||||
| - GHCR matrix gap analysis: 4 compose-referenced images (`a2ui-nats-bridge`, `llama-throughput-lab`, `session-context-worker`, `tokenism-ui`) have no CI build definition — tracked as ops follow-up. | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Update this audit bullet so it doesn’t describe a closed gap as still open. This PR is the one adding those missing GHCR entries, so keeping the note as “have no CI build definition” will make the Mar 7 snapshot stale as soon as Suggested wording-- GHCR matrix gap analysis: 4 compose-referenced images (`a2ui-nats-bridge`, `llama-throughput-lab`, `session-context-worker`, `tokenism-ui`) have no CI build definition — tracked as ops follow-up.
+- GHCR matrix gap analysis identified 4 compose-referenced images (`a2ui-nats-bridge`, `llama-throughput-lab`, `session-context-worker`, `tokenism-ui`) without CI build definitions; PR `#822` adds the missing matrix coverage and local validation targets.As per coding guidelines, "Keep status claims aligned with evidence in runbooks and smokes." 📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||
| - March 6 merge wave completed on `main`: `#797`, `#798`, `#799`, `#800`, `#802`, plus Dependabot workflow updates `#803`-`#807`. | ||||||
| - Superseded lane cleanup completed: `#801` closed (scope incorporated into `#802`). | ||||||
| - Production runtime re-validation passed after merge wave: | ||||||
|
|
||||||
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -3,7 +3,7 @@ | |||||
| > **Single source of truth** for PMOVES.AI production readiness. | ||||||
| > Supersedes all individual audit documents accumulated Feb 7 -- Feb 18, 2026. | ||||||
|
|
||||||
| **Last Updated:** 2026-03-06 (merge queue closeout + production re-validation) | ||||||
| **Last Updated:** 2026-03-07 (8-PR merge wave + GHCR matrix gap analysis) | ||||||
| **Branch:** `PMOVES.AI-Edition-Hardened` (production release lane) | ||||||
| **Commit:** `96adc266` | ||||||
| **Consolidated From:** 27 audit documents | ||||||
|
|
@@ -28,6 +28,54 @@ | |||||
|
|
||||||
| --- | ||||||
|
|
||||||
| ## Latest Changes (Mar 7, 2026) | ||||||
|
|
||||||
| - Merge wave completed on `main`: 8 PRs merged in 3 batches (#814-#821) | ||||||
| - Batch 1 (06:00 UTC): #814 UI build fix, #815 smoke Supabase discovery, #816 healthcheck stability, #817 CI runner alignment, #819 DoX submodule bump | ||||||
| - Batch 2 (07:01 UTC): #818 model fabric + coding-plan wiring (rebased after 8 CodeRabbit comments) | ||||||
| - Batch 3 (17:11 UTC): #820 distributed topology docs, #821 chrome extension (9 security fixes) | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Capitalize "Chrome" as a proper noun. Same issue as in NEXT_STEPS.md - "chrome" should be "Chrome". Proposed fix- - Batch 3 (17:11 UTC): `#820` distributed topology docs, `#821` chrome extension (9 security fixes)
+ - Batch 3 (17:11 UTC): `#820` distributed topology docs, `#821` Chrome extension (9 security fixes)📝 Committable suggestion
Suggested change
🧰 Tools🪛 LanguageTool[uncategorized] ~36-~36: The proper noun “Chrome” (= software from Google) needs to be capitalized. (GOOGLE_PRODUCTS) 🤖 Prompt for AI Agents |
||||||
| - Chrome extension security review completed (9/11 actionable CodeRabbit items addressed): | ||||||
| - `chrome.storage.sync` → `session` for auth credentials | ||||||
| - innerHTML XSS eliminated in options shapes display | ||||||
| - Mock server method allowlist + pathname routing | ||||||
| - `synthesizeAudio` timeout (AbortController) | ||||||
| - Processing status TTL cleanup | ||||||
| - Config load race condition (configReady promise) | ||||||
| - Storage read-modify-write serialization | ||||||
| - Content Security Policy added to manifest.json | ||||||
| - GHCR matrix gap analysis completed (see section below) | ||||||
| - Live metrics: Open PRs `0`, Dependabot `1` (medium), Code Scanning `0` | ||||||
|
|
||||||
| --- | ||||||
|
|
||||||
| ### GHCR Matrix Gap Analysis (Mar 7, 2026) | ||||||
|
|
||||||
| **Build pipelines:** | ||||||
| - `integrations-ghcr.yml` — 10 images (matrix-driven, multi-arch, Trivy + Cosign) | ||||||
| - `self-hosted-builds.yml` — 11 CPU + 2 GPU images (push-triggered, amd64) | ||||||
| - `build-images.yml` — 24 images from `images.yaml` (manual dispatch) | ||||||
|
|
||||||
| **GHCR registry:** 23 packages published. | ||||||
|
|
||||||
| **Compose → GHCR coverage gaps (4 truly missing):** | ||||||
|
|
||||||
| | Service | Compose Image Reference | In GHCR? | In CI? | | ||||||
| |---------|------------------------|----------|--------| | ||||||
| | `a2ui-nats-bridge` | `ghcr.io/.../pmoves-a2ui-nats-bridge:pmoves-latest` | ❌ | ❌ | | ||||||
| | `llama-throughput-lab` | `ghcr.io/.../pmoves-llama-throughput-lab:latest` | ❌ | ❌ | | ||||||
| | `session-context-worker` | `ghcr.io/.../pmoves-session-context-worker:latest` | ❌ | ❌ | | ||||||
| | `tokenism-ui` | `ghcr.io/.../pmoves-tokenism-ui:pmoves-latest` | ❌ | ❌ | | ||||||
| | `ultimate-tts-studio` | `ghcr.io/.../pmoves-ultimate-tts-studio:pmoves-latest` | ✅ (manual) | ❌ | | ||||||
|
|
||||||
| **Cross-reference gaps:** | ||||||
| - `integrations-ghcr.matrix.json` covers 10/24 `images.yaml` entries | ||||||
| - `self-hosted-builds.yml` builds 13 services not in `integrations-ghcr.matrix.json` | ||||||
| - 2 submodules in `images.yaml` still track `main` instead of `PMOVES.AI-Edition-Hardened` (`pmoves-botz`, `pmoves-tailscale`) | ||||||
|
|
||||||
| **Recommendation:** Add build definitions for the 4 missing images, or convert their compose references to local `build:` directives if they're dev-only. | ||||||
|
|
||||||
| --- | ||||||
|
|
||||||
| ## Latest Changes (Mar 6, 2026) | ||||||
|
|
||||||
| - Merge queue closeout completed on `main`: | ||||||
|
|
@@ -85,16 +133,16 @@ | |||||
|
|
||||||
| | Metric | Value | | ||||||
| |--------|-------| | ||||||
| | Quantitative snapshot timestamp | 2026-03-04 (live GitHub + local smoke/model-readiness snapshot) | | ||||||
| | Quantitative snapshot timestamp | 2026-03-07 (live GitHub + local smoke/model-readiness snapshot) | | ||||||
| | Total tracked items | 24 | | ||||||
| | Resolved | 23 (+1 since last update) | | ||||||
| | Active blockers | 1 (self-hosted queue starvation) | | ||||||
| | Critical | 0 | | ||||||
| | High | 1 | | ||||||
| | Medium | 0 | | ||||||
| | Low | 0 | | ||||||
| | CodeQL alerts (open) | **0 open** (live GitHub API on 2026-03-04) | | ||||||
| | Dependabot alerts | **1 open** (`1 medium`; live GitHub API on 2026-03-04) | | ||||||
| | CodeQL alerts (open) | **0 open** (live GitHub API on 2026-03-07) | | ||||||
| | Dependabot alerts | **1 open** (`1 medium`; live GitHub API on 2026-03-07) | | ||||||
| | Open PRs | **0** | | ||||||
| | CI queue | Hosted gates healthy; self-hosted queue starvation persists on CodeQL/GHCR lanes | | ||||||
|
|
||||||
|
|
||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -80,7 +80,7 @@ images: | |
|
|
||
| - name: pmoves-botz | ||
| repo: PMOVES-BoTZ | ||
| ref: heads/main | ||
| ref: heads/PMOVES.AI-Edition-Hardened | ||
|
Comment on lines
81
to
+83
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Keep the image refs aligned with
Use this read-only check to compare overlapping refs in both sources. Expected result: no mismatches. #!/bin/bash
set -euo pipefail
python - <<'PY'
import json
import pathlib
import re
images_refs = {}
current = None
for line in pathlib.Path("pmoves/images.yaml").read_text().splitlines():
m = re.match(r'^\s*-\s+name:\s*(\S+)\s*$', line)
if m:
current = m.group(1)
images_refs[current] = None
continue
m = re.match(r'^\s*ref:\s*(\S+)\s*$', line)
if m and current:
images_refs[current] = m.group(1)
matrix_raw = json.loads(pathlib.Path(".github/workflows/integrations-ghcr.matrix.json").read_text())
if isinstance(matrix_raw, dict):
entries = matrix_raw.get("include") or matrix_raw.get("matrix") or matrix_raw.get("images") or []
else:
entries = matrix_raw
mismatches = []
for entry in entries:
name = entry.get("name")
if name in images_refs:
matrix_ref = entry.get("ref")
images_ref = images_refs[name]
if images_ref != matrix_ref:
mismatches.append((name, images_ref, matrix_ref))
if not mismatches:
print("No ref mismatches found between pmoves/images.yaml and integrations-ghcr.matrix.json")
else:
for name, images_ref, matrix_ref in mismatches:
print(f"{name}: images.yaml={images_ref!r} matrix.json={matrix_ref!r}")
raise SystemExit(1)
PYAlso applies to: 102-104, 169-174 🤖 Prompt for AI Agents |
||
| context: . | ||
| dockerfile: Dockerfile | ||
| image: ghcr.io/powerfulmoves/pmoves-botz | ||
|
|
@@ -101,7 +101,7 @@ images: | |
|
|
||
| - name: pmoves-tailscale | ||
| repo: PMOVES-Tailscale | ||
| ref: heads/main | ||
| ref: heads/PMOVES.AI-Edition-Hardened | ||
| context: . | ||
| dockerfile: Dockerfile | ||
| image: ghcr.io/powerfulmoves/pmoves-tailscale | ||
|
|
@@ -156,10 +156,40 @@ images: | |
| dockerfile: services/gpu-orchestrator/Dockerfile | ||
| image: ghcr.io/powerfulmoves/pmoves-gpu-orchestrator | ||
|
|
||
| - name: pmoves-a2ui-nats-bridge | ||
| context: pmoves | ||
| dockerfile: services/a2ui-nats-bridge/Dockerfile | ||
| image: ghcr.io/powerfulmoves/pmoves-a2ui-nats-bridge | ||
|
|
||
| - name: pmoves-session-context-worker | ||
| context: pmoves | ||
| dockerfile: services/session-context-worker/Dockerfile | ||
| image: ghcr.io/powerfulmoves/pmoves-session-context-worker | ||
|
|
||
| - name: pmoves-tokenism-ui | ||
| repo: PMOVES-ToKenism-Multi | ||
| ref: heads/PMOVES.AI-Edition-Hardened | ||
| context: pmoves-nextjs | ||
| dockerfile: pmoves-nextjs/Dockerfile | ||
| image: ghcr.io/powerfulmoves/pmoves-tokenism-ui | ||
|
|
||
| # GPU-heavy services (manual dispatch only — not in integrations-ghcr matrix) | ||
| - name: pmoves-ultimate-tts-studio | ||
| context: pmoves | ||
| dockerfile: docker/ultimate-tts-studio/Dockerfile | ||
| image: ghcr.io/powerfulmoves/pmoves-ultimate-tts-studio | ||
|
|
||
| # Submodule-backed services | ||
| - name: pmoves-transcribe-backend | ||
| repo: PMOVES-transcribe-and-fetch | ||
| ref: heads/PMOVES.AI-Edition-Hardened | ||
| context: . | ||
| dockerfile: backend/Dockerfile | ||
| image: ghcr.io/powerfulmoves/pmoves-transcribe-backend | ||
|
|
||
| - name: pmoves-llama-throughput-lab | ||
| repo: PMOVES-llama-throughput-lab | ||
| ref: heads/main | ||
| context: . | ||
| dockerfile: Dockerfile | ||
| image: ghcr.io/powerfulmoves/pmoves-llama-throughput-lab | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
Repository: POWERFULMOVES/PMOVES.AI
Length of output: 312
Submodule context path will fail in CI —
git archivedoes not include submodule contents.The
tokenism-uientry references context pathPMOVES-ToKenism-Multi/pmoves-nextjs, which is a git submodule. The workflow at lines 228-235 inintegrations-ghcr.ymlusesgit archive --format=tar HEAD | tar -x -C integration-srcfor the PMOVES.AI repo. This command does not export submodule contents — thePMOVES-ToKenism-Multi/directory will be empty, and the Dockerfile won't be available during the Docker build, causing the build to fail.Options to fix:
git_urltohttps://github.com/POWERFULMOVES/PMOVES-ToKenism-Multi.gitand adjustcontexttopmoves-nextjs(similar tollama-throughput-lab)git submodule update --init --recursiveto the workflow before archivegit clone --recurse-submodulesinstead of archive for this entry🤖 Prompt for AI Agents