Skip to content

docs(dashboard): refresh post-PRs #867-871 + branch sync - #872

Merged
POWERFULMOVES merged 2 commits into
mainfrom
docs/dashboard-refresh-867-871
Mar 11, 2026
Merged

POWERFULMOVES merged 2 commits into
mainfrom
docs/dashboard-refresh-867-871

Conversation

@POWERFULMOVES

@POWERFULMOVES POWERFULMOVES commented Mar 11, 2026

Copy link
Copy Markdown
Owner

Summary

Verification

  • make -C pmoves docs-reconcile — 0 drift, documents fresh
  • Static smoke tests: 152 passed, 85 skipped, 1 error (pre-existing TZ fixture ordering, passes in isolation)
  • CodeQL open alerts: 1 (FP docs: align Cataclysm brand blueprint with repo state #195 only)
  • Dependabot alerts: 0
  • Branch sync: main → Hardened complete

Test plan

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation
    • Updated production audit dashboard with latest merged PRs, expanded recent-changes notes, and refreshed CodeQL/metrics status reflecting fixes and outstanding items.
  • Chores
    • Improved service health check to use a more reliable HTTP probe for local/development environments.

Update Production Audit Dashboard with PRs #867-871 (port registry,
smoke test remaps, CodeQL #196 fix, Jellyfin smoke codes). Sync
main → Hardened (c6bc276). CodeQL #195 FP correctly suppressed,
pending GitHub dismissal.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Mar 11, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: f99eb494-e39d-4682-9c4e-f6429cae2efe

📥 Commits

Reviewing files that changed from the base of the PR and between 87ee9f5 and 876b4bf.

📒 Files selected for processing (1)
  • pmoves/docker-compose.yml

📝 Walkthrough

Walkthrough

Updated the production audit dashboard docs to reflect merged PRs #867-#871 (port registry, smoke tests, security fixes) and updated commit reference; changed supabase-meta service healthcheck in docker-compose.yml from a wget probe to a Node.js one-liner that requires a 200 response.

Changes

Cohort / File(s) Summary
Documentation
pmoves/docs/PRODUCTION_AUDIT_DASHBOARD.md
Revised header metadata (commit -> c81b2431), replaced PR reference to #867-#871, added "PRs #867-#871 — Port Registry, Smoke Test & Security Fixes" subsection, noted PR #866 superseded, and updated CodeQL / quantitative snapshot entries (one open FP #195).
Docker config
pmoves/docker-compose.yml
Replaced supabase-meta healthcheck from a wget-based HTTP probe to a Node.js one-liner that performs GET http://localhost:8080/health and exits 0 only on HTTP 200; healthcheck timing settings unchanged.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • PR #836: Modifies the same PRODUCTION_AUDIT_DASHBOARD.md entries / CodeQL status around the same merge wave.
  • PR #749: The /api/audit/summary route reads/parses this dashboard file; doc changes affect that aggregator.
  • PR #798: Updates or standardizes healthchecks in pmoves/docker-compose.yml; directly related to the supabase-meta healthcheck change.

Poem

🐰 I hopped through commits, eyes agleam,

Merged PRs fixed the port registry dream,
Healthchecks now ping with Node's small cheer,
Smoke cleared, CodeQL whispers near,
I nibbled a carrot and gave a small leer.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: refreshing the production audit dashboard documentation post-merge of PRs #867-871 and syncing branches.
Description check ✅ Passed The description includes a clear summary, detailed verification results, and a comprehensive test plan, though some required template sections (Testing commands, Codex/Copilot reviews) are absent.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch docs/dashboard-refresh-867-871

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 and usage tips.

@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: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@pmoves/docs/PRODUCTION_AUDIT_DASHBOARD.md`:
- Around line 16-24: Update the "PRs `#867-`#871 — Port Registry, Smoke Test &
Security Fixes" section to actually include PR `#869` and the promised
verification artifacts: add a bullet for PR `#869` summarizing its change, then
append concise verification lines stating "docs-reconcile drift: 0", the updated
static smoke test totals (new counts) and "CodeQL suppression comment confirmed
at serviceHealth.ts:71 (pending GitHub dismissal)"; edit the top-of-file
narrative to reflect the full merge window (PRs `#867`–#871) and that these three
verification artifacts have been added so the section is consistent with the PR
scope.
- Line 24: Update the inconsistent CodeQL open-alerts counts by replacing the
hardcoded "CodeQL status: 1 open (FP `#195`)" text with a single source-of-truth
value used elsewhere in the doc: locate the occurrences of the literal "CodeQL
status" / "open" and "FP `#195`" and make them derive from the same computed
status or evidence block (the runbook/smoke results) used for the live status
line; ensure all occurrences (including the block that currently reads "0 open")
reference that shared variable or text and adjust the FP annotation so every
section shows the same current open-count and matching FP note.
- Around line 19-21: Update the canonical services catalog entries to match the
recent port remaps: change the PostgREST service entry (label "PostgREST") to
use port 3000 instead of 3010, and add a dedicated service entry for
"supabase-realtime" (or "subabase-realtime" if that exact label is used) with
port 4010; ensure the service entry follows the same schema/fields as other
services in services-catalog.md so the PORT_REGISTRY/smoke-test expectations
align with the dashboard.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: f8feaf79-7d70-48d9-a79b-f683d37c5b30

📥 Commits

Reviewing files that changed from the base of the PR and between c81b243 and 87ee9f5.

📒 Files selected for processing (1)
  • pmoves/docs/PRODUCTION_AUDIT_DASHBOARD.md

Comment on lines +16 to +24
### PRs #867-#871 — Port Registry, Smoke Test & Security Fixes

- **PR #867** (`fix(security)`): CodeQL #196 — validate service URLs with `URL` constructor (XSS prevention)
- **PR #868** (`fix(smoke)`): Remap supabase-realtime port 4000→4010 in smoke tests + widen grep window
- **PR #870** (`fix(ports)`): Complete realtime 4000→4010 migration across PORT_REGISTRY and smoke tests
- **PR #871** (`fix(ui)`): Align PostgREST port registry (3010→3000) + env template fix + widen Jellyfin smoke HTTP codes (accept 502)
- **PR #866 closed** — superseded by the individual targeted PRs #867-#871
- **Branch sync:** main → Hardened synced (`c6bc276f`)
- **CodeQL status:** 1 open (#195 — false positive, `lgtm` suppression comment at `serviceHealth.ts:71`, pending GitHub dismissal on next scan)

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.

⚠️ Potential issue | 🟠 Major

Complete the #867-#871 refresh section.

This section says the dashboard is refreshed for PRs #867-#871, but it skips PR #869 and also omits the fresh verification artifacts called out in the PR scope (docs-reconcile drift status, updated static smoke totals, suppression confirmation). That leaves the new top-of-file narrative incomplete relative to the stated merge window.

As per coding guidelines, "Extend Latest Changes to include PRs 867–871 with precise fixes ... Verification artifacts: note 0 drift from docs reconciliation, static smoke test results, and CodeQL suppression comment confirmation ..."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pmoves/docs/PRODUCTION_AUDIT_DASHBOARD.md` around lines 16 - 24, Update the
"PRs `#867-`#871 — Port Registry, Smoke Test & Security Fixes" section to actually
include PR `#869` and the promised verification artifacts: add a bullet for PR
`#869` summarizing its change, then append concise verification lines stating
"docs-reconcile drift: 0", the updated static smoke test totals (new counts) and
"CodeQL suppression comment confirmed at serviceHealth.ts:71 (pending GitHub
dismissal)"; edit the top-of-file narrative to reflect the full merge window
(PRs `#867`–#871) and that these three verification artifacts have been added so
the section is consistent with the PR scope.

Comment on lines +19 to +21
- **PR #868** (`fix(smoke)`): Remap supabase-realtime port 4000→4010 in smoke tests + widen grep window
- **PR #870** (`fix(ports)`): Complete realtime 4000→4010 migration across PORT_REGISTRY and smoke tests
- **PR #871** (`fix(ui)`): Align PostgREST port registry (3010→3000) + env template fix + widen Jellyfin smoke HTTP codes (accept 502)

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.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

catalog="$(fd '^services-catalog\.md$' .claude | head -n1)"
test -n "$catalog"

# Expect the catalog entries for supabase-realtime and PostgREST to reflect 4010 and 3000,
# and not retain stale 4000/3010 mappings for the current host-port assignments.
rg -n -C2 'supabase-realtime|PostgREST|4010|4000|3010|3000' "$catalog"

Repository: POWERFULMOVES/PMOVES.AI

Length of output: 1294


🏁 Script executed:

#!/bin/bash
set -euo pipefail

catalog="$(fd '^services-catalog\.md$' .claude | head -n1)"
test -n "$catalog"

echo "=== Full Supabase section ==="
rg -n -A 10 '^### Supabase$' "$catalog"

echo ""
echo "=== Check for supabase-realtime section ==="
rg -n -B2 -A5 'realtime|supabase-realtime' "$catalog"

Repository: POWERFULMOVES/PMOVES.AI

Length of output: 1296


Sync the canonical services catalog with these port remaps.

This doc now records subabase-realtime 4000→4010 and PostgREST 3010→3000. However, .claude/context/services-catalog.md has not been updated:

  • PostgREST still shows port 3010 (line 608), not the migrated 3000
  • Subabase-realtime has no dedicated service entry with port assignment

Update the catalog to reflect both port migrations to prevent immediate drift from the dashboard.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pmoves/docs/PRODUCTION_AUDIT_DASHBOARD.md` around lines 19 - 21, Update the
canonical services catalog entries to match the recent port remaps: change the
PostgREST service entry (label "PostgREST") to use port 3000 instead of 3010,
and add a dedicated service entry for "supabase-realtime" (or
"subabase-realtime" if that exact label is used) with port 4010; ensure the
service entry follows the same schema/fields as other services in
services-catalog.md so the PORT_REGISTRY/smoke-test expectations align with the
dashboard.

- **PR #871** (`fix(ui)`): Align PostgREST port registry (3010→3000) + env template fix + widen Jellyfin smoke HTTP codes (accept 502)
- **PR #866 closed** — superseded by the individual targeted PRs #867-#871
- **Branch sync:** main → Hardened synced (`c6bc276f`)
- **CodeQL status:** 1 open (#195 — false positive, `lgtm` suppression comment at `serviceHealth.ts:71`, pending GitHub dismissal on next scan)

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.

⚠️ Potential issue | 🟠 Major

Make the CodeQL “open alerts” count internally consistent.

These lines now report 1 open (FP #195), but Line 679 still says live CodeQL status is 0 open. A single dashboard should not present two different current counts for the same date window.

As per coding guidelines, "Keep status claims aligned with evidence in runbooks and smokes."

Also applies to: 505-513

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pmoves/docs/PRODUCTION_AUDIT_DASHBOARD.md` at line 24, Update the
inconsistent CodeQL open-alerts counts by replacing the hardcoded "CodeQL
status: 1 open (FP `#195`)" text with a single source-of-truth value used
elsewhere in the doc: locate the occurrences of the literal "CodeQL status" /
"open" and "FP `#195`" and make them derive from the same computed status or
evidence block (the runbook/smoke results) used for the live status line; ensure
all occurrences (including the block that currently reads "0 open") reference
that shared variable or text and adjust the FP annotation so every section shows
the same current open-count and matching FP note.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 87ee9f57cb

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

- **PR #870** (`fix(ports)`): Complete realtime 4000→4010 migration across PORT_REGISTRY and smoke tests
- **PR #871** (`fix(ui)`): Align PostgREST port registry (3010→3000) + env template fix + widen Jellyfin smoke HTTP codes (accept 502)
- **PR #866 closed** — superseded by the individual targeted PRs #867-#871
- **Branch sync:** main → Hardened synced (`c6bc276f`)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Use a valid SHA for the branch-sync evidence

The new branch-sync bullet references c6bc276f, but that SHA is not present in this repository history (no match in git rev-list --all), so readers cannot verify the claimed main → Hardened sync event from the dashboard. Since this document is positioned as the production audit source of truth, an unresolvable commit ID breaks traceability for release/audit checks and should be replaced with an actual reachable sync commit.

Useful? React with 👍 / 👎.

postgres-meta image lacks wget/curl — use built-in Node.js http module
for the /health endpoint check. Verified healthy in local testing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Docker Hardening Validation

Hardening Validation Report

Validated: Wed Mar 11 23:26:38 UTC 2026

Services Checked

PMOVES.AI Docker Hardening Validation

[INFO] Checking: pmoves/docker-compose.hardened.yml

[INFO] Validating: hi-rag-gateway-v2
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: extract-worker
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: langextract
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: presign
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: render-webhook
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: retrieval-eval
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: pdf-ingest
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: jellyfin-bridge
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: invidious-companion-proxy
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: ffmpeg-whisper
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: media-video
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: media-audio
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: hi-rag-gateway-v2-gpu
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: hi-rag-gateway-gpu
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: deepresearch
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: supaserch
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: publisher-discord
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: mesh-agent
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: nats-echo-req
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: nats-echo-res
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: publisher
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: analysis-echo
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: graph-linker
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: comfy-watcher
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: grayjay-plugin-host
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: agent-zero
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: archon
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: channel-monitor
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: pmoves-yt
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: notebook-sync
[PASS] Non-root user: 65532:65532
[PASS] Read-only filesystem
[PASS] All capabilities dropped
[PASS] No-new-privileges enabled
[WARN] No resource limits

[INFO] Validating: supabase_service_role_key
[WARN] No user directive
[WARN] No read_only directive
[WARN] No cap_drop: ["ALL"]
[WARN] No no-new-privileges
[WARN] No resource limits

[INFO] Validating: supabase_jwt_secret
[WARN] No user directive
[WARN] No read_only directive
[WARN] No cap_drop: ["ALL"]
[WARN] No no-new-privileges
[WARN] No resource limits

======================================
Summary: 120 passed, 40 warnings, 0 errors

@POWERFULMOVES
POWERFULMOVES merged commit f3ccb3f into main Mar 11, 2026
16 of 17 checks passed
@POWERFULMOVES
POWERFULMOVES deleted the docs/dashboard-refresh-867-871 branch March 12, 2026 00:01
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.

2 participants