Skip to content

fix(a2a): secure discovery/task APIs and align with upstream agent-card path - #744

Merged
POWERFULMOVES merged 35 commits into
PMOVES.AI-Edition-Hardenedfrom
fix/a2a-discovery-hardening
Mar 2, 2026
Merged

fix(a2a): secure discovery/task APIs and align with upstream agent-card path#744
POWERFULMOVES merged 35 commits into
PMOVES.AI-Edition-Hardenedfrom
fix/a2a-discovery-hardening

Conversation

@POWERFULMOVES

@POWERFULMOVES POWERFULMOVES commented Mar 2, 2026

Copy link
Copy Markdown
Owner

Summary

  • enforce auth by default on all Agent Zero A2A task/discovery endpoints
  • add canonical discovery route /.well-known/agent-card.json and keep /.well-known/agent.json as legacy alias
  • keep secure-by-default posture with explicit dev-only opt-ins (A2A_DISCOVERY_PUBLIC, A2A_TASKS_PUBLIC)
  • remove JWT parser detail leakage from auth failures
  • update integration docs and add upstream parity review note (A2A commit 4890b77)

Validation

  • pytest -q pmoves/services/agent-zero/python/features/a2a/test_server.py (26 passed)
  • python -m py_compile pmoves/services/agent-zero/python/features/a2a/server.py pmoves/services/agent-zero/python/features/a2a/types.py pmoves/services/agent-zero/python/features/a2a/test_server.py

Scope

  • pmoves/services/agent-zero/python/features/a2a/server.py
  • pmoves/services/agent-zero/python/features/a2a/types.py
  • pmoves/services/agent-zero/python/features/a2a/test_server.py
  • pmoves/docs/integrations/INTEGRATIONS.md
  • pmoves/docs/reviews/2026-03-02/a2a-upstream-parity-review.md

Update (2026-03-02)

  • Added CI resilience fixes in pmoves/services/pmoves-yt/yt.py for optional deps (yt_dlp, �oto3, enacity) so test collection does not hard-fail in minimal runners.
  • Bumped PMOVES-Agent-Zero submodule to commit 4f17e9f (canonical /.well-known/agent-card.json support with legacy alias compatibility).
  • PR scope cleanup: removed PMOVES-transcribe-and-fetch and Pmoves-cipher gitlink bumps from this PR to avoid overlap with PR chore(submodules): bump transcribe-and-fetch + cipher for A2A parity #745.

POWERFULMOVES and others added 27 commits February 28, 2026 18:34
…nches

Update gitlink pointers for 5 submodules to their security fix branches:
- BoTZ: auth-gate /.well-known/agent.json (PR #70)
- ToKenism-Multi: all P1/P2 cred defaults fixed (PR #46)
- Agent-Zero: path containment + supervisord users (PR #8)
- transcribe-and-fetch: openai v2 alignment + doc scrub (PR #44)
- DoX: secrets externalized + honest 501 (PR #114)

Also update review status doc with fix verification.

All 7 P1 and 20 P2 findings resolved. 4 dependabot PRs merged.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…reflight (#736)

* fix(security): use HMAC for CHIT proofs

* docs(security): add A2A discovery auth sweep findings

* chore(env): require dotnet sdk in bootstrap preflight

---------

Co-authored-by: Shaela Bello <slbello@uncg.edu>
Bumps the npm_and_yarn group with 1 update in the /CATACLYSM_STUDIOS_INC/L4-PLATFORM/provisions/docker-stacks/jellyfin-ai/api-gateway directory: [multer](https://github.com/expressjs/multer).


Updates `multer` from 2.0.2 to 2.1.0
- [Release notes](https://github.com/expressjs/multer/releases)
- [Changelog](https://github.com/expressjs/multer/blob/main/CHANGELOG.md)
- [Commits](expressjs/multer@v2.0.2...v2.1.0)

---
updated-dependencies:
- dependency-name: multer
  dependency-version: 2.1.0
  dependency-type: direct:production
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…honpath-fix

fix(chit): correct FlOO$ PYTHONPATH for pr-monitor pipeline
…-auth

fix(security): auth-gate Agent Zero A2A discovery endpoint
* fix(security): use HMAC for CHIT proofs

* docs(security): add A2A discovery auth sweep findings

* fix(security): update submodule pointers to 2026-03-01 review fix branches

Update gitlink pointers for 5 submodules to their security fix branches:
- BoTZ: auth-gate /.well-known/agent.json (PR #70)
- ToKenism-Multi: all P1/P2 cred defaults fixed (PR #46)
- Agent-Zero: path containment + supervisord users (PR #8)
- transcribe-and-fetch: openai v2 alignment + doc scrub (PR #44)
- DoX: secrets externalized + honest 501 (PR #114)

Also update review status doc with fix verification.

All 7 P1 and 20 P2 findings resolved. 4 dependabot PRs merged.

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

* chore(env): require dotnet sdk in bootstrap preflight

* feat(chit): add CHIT-signed Graphiti trail tooling

Add provenance signing for agent trail entries using CHIT HMAC:
- sign_trail.py: CLI tool to create and sign trail entries
- PostToolUse hook for automatic signing on trail file writes
- /chit:sign-trail skill command for interactive use
- Preflight check for dotnet SDK (required by CHIT crypto)
- CLAUDE.md documentation for trail signing workflow
- Settings.json hook registration

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

---------

Co-authored-by: Shaela Bello <slbello@uncg.edu>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…ng (#740)

* fix(security): use HMAC for CHIT proofs

* docs(security): add A2A discovery auth sweep findings

* fix(security): update submodule pointers to 2026-03-01 review fix branches

Update gitlink pointers for 5 submodules to their security fix branches:
- BoTZ: auth-gate /.well-known/agent.json (PR #70)
- ToKenism-Multi: all P1/P2 cred defaults fixed (PR #46)
- Agent-Zero: path containment + supervisord users (PR #8)
- transcribe-and-fetch: openai v2 alignment + doc scrub (PR #44)
- DoX: secrets externalized + honest 501 (PR #114)

Also update review status doc with fix verification.

All 7 P1 and 20 P2 findings resolved. 4 dependabot PRs merged.

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

* chore(env): require dotnet sdk in bootstrap preflight

* fix(compose): networking, healthchecks, and env hardening

- Fix external compose service networking and port bindings
- Add missing healthcheck configurations to n8n compose
- Update env.shared.example with new required variables
- Harden docker-compose.yml service definitions

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

* fix(services): auth, healthchecks, and dependency updates

- Agent Zero: Dockerfile non-root hardening, MCP server auth fixes
- service_registry: improve service discovery and health reporting
- evo-controller: add healthcheck endpoint and startup guards
- flute-gateway: fix import path
- render-webhook: update deps, add input validation
- retrieval-eval: add health and metrics endpoints

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

* fix(sql): RLS policies, model registry seeds, and supabase config

- Tighten RLS policies for public_init and geometry tables
- Update model registry seed data with current model versions
- Add studio board RLS migration for service_role access
- Add supabase .gitignore and config.toml for local dev

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

* fix(tooling): Makefile targets, smoke tests, and operational scripts

- Makefile: add sign-trail, volume-reset, and infra targets
- smoke.ps1: expand service coverage and timeout handling
- with-env.sh: support multi-tier env loading
- bringup_with_ui.sh: improve startup sequencing
- chit_security.py: fix HMAC signing edge cases
- retro_flightcheck.py: add new validation checks
- capture_evidence.sh: new script for PR evidence collection
- AI_GRAPHITI_PROTOCOL.md: document agent trail protocol
- pr-monitor.md: update skill command definition

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

* fix(submodules): update BoTZ-gateway and Cipher pointers

Update submodule pointers to latest reviewed commits from
2026-03-01 security sweep.

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

* docs(security): 2026-03-01 submodule security reviews and agent notes

- 5 submodule security reviews (Agent Zero, BoTZ, DoX, ToKenism, transcribe-and-fetch)
- Security queue tracker and sitrep JSON
- AGNOTE4482 FlOO$ and Flute agent notes
- CHIT review-sweep skill command and post-review hook

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

---------

Co-authored-by: Shaela Bello <slbello@uncg.edu>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…ded service mappings

Add Anthropic provider (claude-sonnet-4-5, claude-opus-4-5, claude-haiku-4-5)
as persona backbone. Add TTS provider with 6 engines from Ultimate TTS Studio.
Add 5 missing Ollama models from gpu-models.yaml (qwen3:32b, qwen3:1.7b,
llama3.2:3b, codellama:7b, deepseek-coder:6.7b). Fix VRAM values to match
gpu-models.yaml truth (qwen3:8b: 8000→6144, nomic-embed-text: 1000→512).
Expand service-model mappings from 4 to 15+ services including hirag, archon,
coding, orchestrator, vl_sentinel, tts, extract_worker, and more.

Covers TAC branches B + C.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy persona seeds from pmoves/db/v5_14_seed_standard_personas.sql into the
active Supabase initdb pipeline as 17_persona_seed.sql. Personas reference
claude-sonnet-4-5 (Developer/Creator/Analyst/Tester), claude-opus-4-5
(Researcher/Coordinator/Security), and claude-haiku-4-5 (Archivist).

Sequenced after model registry (12) to ensure model_preference references
are valid. Preserves ON CONFLICT (name, version) idempotency.

Covers TAC branch A.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add 10 models missing from gpu-models.yaml that exist in SQL and consume
local GPU VRAM: qwen2.5:32b, qwen2.5:14b, qwen2-vl:7b, qwen3-reranker:4b,
nemotron-mini, llama3.1, qwen3-embedding:4b/8b, embeddinggemma:300m.
GPU Orchestrator needs these entries for VRAM scheduling on RTX 5090.

Covers TAC branch D.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…y lookup

Create persona_model_resolution view joining persona → model → provider
for runtime resolution of which API endpoint to call for each persona.
Also adds active_persona_summary convenience view. Grants SELECT to
PostgREST anon/auth roles.

Covers TAC branch F.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Create model_readiness_check.py that validates:
- Supabase model_providers populated with ≥8 active providers
- Supabase personas table populated with ≥8 rows
- Ollama has expected local models pulled
- TensorZero gateway operational
- persona_model_resolution view returns valid data

Add 'make model-readiness' target and wire into verify-all chain.

Covers TAC branch E.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@coderabbitai

coderabbitai Bot commented Mar 2, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/a2a-discovery-hardening

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.

@github-actions

github-actions Bot commented Mar 2, 2026

Copy link
Copy Markdown
Contributor

Docker Hardening Validation

Hardening Validation Report

Validated: Mon 02 Mar 2026 02:46:57 AM UTC

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

@github-actions

github-actions Bot commented Mar 2, 2026

Copy link
Copy Markdown
Contributor

Docker Hardening Validation

Hardening Validation Report

Validated: Mon 02 Mar 2026 03:36:18 AM UTC

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

@github-actions

github-actions Bot commented Mar 2, 2026

Copy link
Copy Markdown
Contributor

Docker Hardening Validation

Hardening Validation Report

Validated: Mon 02 Mar 2026 03:47:37 AM UTC

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

Copy link
Copy Markdown
Owner Author

CLAUDE handoff requested by operator.\n\nStatus snapshot:\n- Functional/security checks are green (integration-gate, tests, lint, verify, CodeQL scans, Docker bench).\n- No open review threads.\n- Remaining blockers are queued/in-progress GHCR matrix + Docker hardening jobs on runner lanes, plus required review.\n\nReview ask:\n1. Perform final code review for A2A discovery/task hardening scope only.\n2. Validate no regressions in auth-gating and upstream agent-card path parity.\n3. If checks remain queued beyond SLA, post runner-lane triage note and whether admin-merge policy is appropriate after critical hosted checks pass.\n\nCodex note: actionable comments have been addressed and resolved.

@POWERFULMOVES POWERFULMOVES left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

CLAUDE Review: REQUEST CHANGES (self-review — posting as comment)

Scope: 74 files, 14 commits | Risk: High (auth, SQL, Docker, A2A protocol)

The core A2A auth-gating work is well-implemented and fail-closed. The _require_a2a_auth() function correctly fails with 500 on missing dependencies/config, 401 on missing headers, 403 on invalid tokens, and explicitly rejects anon role. HMAC migration from hashlib.new() to hmac.new() is a correct security fix.

However, there are 3 blocking issues in adjacent changes:


BLOCKING

B-1. initdb creates USING (true) RLS that migration cannot overwrite

Files: pmoves/supabase/initdb/01_public_init.sql, pmoves/supabase/migrations/20260301001000_studio_board_rls_service_role.sql

The initdb adds three USING (true) WITH CHECK (true) policies (anon, authenticated, service_role) on studio_board. The migration correctly drops anon_all and authenticated_all, then uses NOT EXISTS to guard creation of studio_board_service_role_all with proper USING (auth.role() = 'service_role').

Problem: On fresh deployments, initdb runs first and creates studio_board_service_role_all with USING (true). The migration then sees it exists and skips the hardened version. Result: fresh deploys get a wide-open service_role policy.

Fix: Either (a) remove the service_role_all policy from initdb entirely (let migration create it), or (b) use DROP POLICY IF EXISTS ... ; CREATE POLICY ... in the migration instead of NOT EXISTS guard, or (c) make initdb create the hardened version matching the migration.

B-2. model-registry SUPABASE_SERVICE_KEY downgraded from required to optional

File: pmoves/docker-compose.yml

-    - SUPABASE_SERVICE_KEY=${SUPABASE_SERVICE_KEY:?MODEL_REGISTRY requires SUPABASE_SERVICE_KEY}
+    - SUPABASE_SERVICE_KEY=${SUPABASE_SERVICE_KEY:-${SUPABASE_SERVICE_ROLE_KEY:-}}

The :? syntax was a fail-closed gate. The :- with empty fallback allows the container to start with an empty API key — all Supabase calls fail at runtime with unclear errors.

Fix: ${SUPABASE_SERVICE_KEY:-${SUPABASE_SERVICE_ROLE_KEY:?MODEL_REGISTRY requires SUPABASE_SERVICE_KEY or SUPABASE_SERVICE_ROLE_KEY}}

B-3. discover_agents endpoint uses wrong auth function

File: pmoves/services/agent-zero/python/features/a2a/server.py (~line 510)

async def discover_agents(...):
    _require_task_auth(authorization)  # Should be _require_discovery_auth

The /a2a/v1/discover endpoint is a discovery endpoint but calls _require_task_auth() instead of _require_discovery_auth(). This means:

  • A2A_DISCOVERY_PUBLIC=true does NOT affect /a2a/v1/discover (still behind A2A_TASKS_PUBLIC)
  • Operators cannot independently control discovery vs task auth granularity
  • Inconsistent with get_agent_card which correctly uses _require_discovery_auth

Fix: Change to _require_discovery_auth(authorization)


WARNING (defer-able)

# Issue File
W-1 persona_model_resolution view grants SELECT to postgrest_anon — exposes api_key_env_var names to anonymous users migrations/20260301002000_*
W-2 render-webhook JWT check is count(".") >= 2 — string like a.b.c passes services/render-webhook/webhook.py
W-3 service_registry.py sync wrapper uses unbounded worker.join() — can hang forever on DNS timeout services/common/service_registry.py
W-4 config.toml sets minimum_password_length = 6, secure_password_change = false supabase/config.toml
W-5 PostToolUse hook uses Windows backslash paths — breaks on Linux CI .claude/settings.json

POSITIVE NOTES

  • HMAC construction fix (hashlibhmac.new + compare_digest) eliminates length-extension attack vector
  • Flute-gateway NATS_URL fix (was using redacted URL for actual connection)
  • pmoves-yt optional import pattern with 503 fallback is defensive and correct
  • chat-relay lazy import avoids supabase/ directory shadowing the pip package
  • geometry_rls.sql dynamic namespace resolution via information_schema is safe (no user input in format())
  • A2A auth is generally well-structured with proper fail-closed semantics

Status: Blocks on B-1, B-2, B-3. Once fixed, this is a strong security hardening PR.

…te, discovery auth

B-1: studio_board RLS policy now restricts to service_role instead of using(true)
B-2: model-registry SUPABASE_SERVICE_KEY uses :? (fail-closed) instead of :- (empty)
B-3: discover_agents endpoint uses _require_discovery_auth instead of _require_task_auth

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@POWERFULMOVES
POWERFULMOVES merged commit a9d7d20 into PMOVES.AI-Edition-Hardened Mar 2, 2026
11 of 32 checks passed
POWERFULMOVES added a commit that referenced this pull request Mar 2, 2026
* chore(submodules): bump transcribe-and-fetch + cipher for A2A parity (#745)

* chore(submodules): bump transcribe-and-fetch and cipher for a2a auth parity

* chore(submodules): bump transcribe-and-fetch and cipher to merge-ready A2A heads

---------

Co-authored-by: Shaela Bello <slbello@uncg.edu>

* fix(a2a): secure discovery/task APIs and align with upstream agent-card path (#744)

* fix(security): use HMAC for CHIT proofs

* docs(security): add A2A discovery auth sweep findings

* fix(security): update submodule pointers to 2026-03-01 review fix branches

Update gitlink pointers for 5 submodules to their security fix branches:
- BoTZ: auth-gate /.well-known/agent.json (PR #70)
- ToKenism-Multi: all P1/P2 cred defaults fixed (PR #46)
- Agent-Zero: path containment + supervisord users (PR #8)
- transcribe-and-fetch: openai v2 alignment + doc scrub (PR #44)
- DoX: secrets externalized + honest 501 (PR #114)

Also update review status doc with fix verification.

All 7 P1 and 20 P2 findings resolved. 4 dependabot PRs merged.

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

* chore(env): require dotnet sdk in bootstrap preflight

* fix(security): auth-gate agent-zero A2A discovery endpoint

* fix(security): HMAC CHIT proofs + A2A discovery auth audit + dotnet preflight (#736)

* fix(security): use HMAC for CHIT proofs

* docs(security): add A2A discovery auth sweep findings

* chore(env): require dotnet sdk in bootstrap preflight

---------

Co-authored-by: Shaela Bello <slbello@uncg.edu>

* chore(deps): bump multer (#735)

Bumps the npm_and_yarn group with 1 update in the /CATACLYSM_STUDIOS_INC/L4-PLATFORM/provisions/docker-stacks/jellyfin-ai/api-gateway directory: [multer](https://github.com/expressjs/multer).


Updates `multer` from 2.0.2 to 2.1.0
- [Release notes](https://github.com/expressjs/multer/releases)
- [Changelog](https://github.com/expressjs/multer/blob/main/CHANGELOG.md)
- [Commits](expressjs/multer@v2.0.2...v2.1.0)

---
updated-dependencies:
- dependency-name: multer
  dependency-version: 2.1.0
  dependency-type: direct:production
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix(chit): correct FlOO$ PYTHONPATH for pr-monitor pipeline

* feat(chit): CHIT-signed Graphiti trail + skill pairing awareness (#739)

* fix(security): use HMAC for CHIT proofs

* docs(security): add A2A discovery auth sweep findings

* fix(security): update submodule pointers to 2026-03-01 review fix branches

Update gitlink pointers for 5 submodules to their security fix branches:
- BoTZ: auth-gate /.well-known/agent.json (PR #70)
- ToKenism-Multi: all P1/P2 cred defaults fixed (PR #46)
- Agent-Zero: path containment + supervisord users (PR #8)
- transcribe-and-fetch: openai v2 alignment + doc scrub (PR #44)
- DoX: secrets externalized + honest 501 (PR #114)

Also update review status doc with fix verification.

All 7 P1 and 20 P2 findings resolved. 4 dependabot PRs merged.

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

* chore(env): require dotnet sdk in bootstrap preflight

* feat(chit): add CHIT-signed Graphiti trail tooling

Add provenance signing for agent trail entries using CHIT HMAC:
- sign_trail.py: CLI tool to create and sign trail entries
- PostToolUse hook for automatic signing on trail file writes
- /chit:sign-trail skill command for interactive use
- Preflight check for dotnet SDK (required by CHIT crypto)
- CLAUDE.md documentation for trail signing workflow
- Settings.json hook registration

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

---------

Co-authored-by: Shaela Bello <slbello@uncg.edu>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* fix(runtime): service networking, healthchecks, SQL, Makefile hardening (#740)

* fix(security): use HMAC for CHIT proofs

* docs(security): add A2A discovery auth sweep findings

* fix(security): update submodule pointers to 2026-03-01 review fix branches

Update gitlink pointers for 5 submodules to their security fix branches:
- BoTZ: auth-gate /.well-known/agent.json (PR #70)
- ToKenism-Multi: all P1/P2 cred defaults fixed (PR #46)
- Agent-Zero: path containment + supervisord users (PR #8)
- transcribe-and-fetch: openai v2 alignment + doc scrub (PR #44)
- DoX: secrets externalized + honest 501 (PR #114)

Also update review status doc with fix verification.

All 7 P1 and 20 P2 findings resolved. 4 dependabot PRs merged.

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

* chore(env): require dotnet sdk in bootstrap preflight

* fix(compose): networking, healthchecks, and env hardening

- Fix external compose service networking and port bindings
- Add missing healthcheck configurations to n8n compose
- Update env.shared.example with new required variables
- Harden docker-compose.yml service definitions

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

* fix(services): auth, healthchecks, and dependency updates

- Agent Zero: Dockerfile non-root hardening, MCP server auth fixes
- service_registry: improve service discovery and health reporting
- evo-controller: add healthcheck endpoint and startup guards
- flute-gateway: fix import path
- render-webhook: update deps, add input validation
- retrieval-eval: add health and metrics endpoints

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

* fix(sql): RLS policies, model registry seeds, and supabase config

- Tighten RLS policies for public_init and geometry tables
- Update model registry seed data with current model versions
- Add studio board RLS migration for service_role access
- Add supabase .gitignore and config.toml for local dev

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

* fix(tooling): Makefile targets, smoke tests, and operational scripts

- Makefile: add sign-trail, volume-reset, and infra targets
- smoke.ps1: expand service coverage and timeout handling
- with-env.sh: support multi-tier env loading
- bringup_with_ui.sh: improve startup sequencing
- chit_security.py: fix HMAC signing edge cases
- retro_flightcheck.py: add new validation checks
- capture_evidence.sh: new script for PR evidence collection
- AI_GRAPHITI_PROTOCOL.md: document agent trail protocol
- pr-monitor.md: update skill command definition

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

* fix(submodules): update BoTZ-gateway and Cipher pointers

Update submodule pointers to latest reviewed commits from
2026-03-01 security sweep.

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

* docs(security): 2026-03-01 submodule security reviews and agent notes

- 5 submodule security reviews (Agent Zero, BoTZ, DoX, ToKenism, transcribe-and-fetch)
- Security queue tracker and sitrep JSON
- AGNOTE4482 FlOO$ and Flute agent notes
- CHIT review-sweep skill command and post-review hook

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

---------

Co-authored-by: Shaela Bello <slbello@uncg.edu>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* docs(agents): overlay TAC model/persona readiness into graphiti protocol

* docs(agents): correct TAC status wording for local staged artifacts

* feat(models): reconcile model registry with Anthropic, TTS, and expanded service mappings

Add Anthropic provider (claude-sonnet-4-5, claude-opus-4-5, claude-haiku-4-5)
as persona backbone. Add TTS provider with 6 engines from Ultimate TTS Studio.
Add 5 missing Ollama models from gpu-models.yaml (qwen3:32b, qwen3:1.7b,
llama3.2:3b, codellama:7b, deepseek-coder:6.7b). Fix VRAM values to match
gpu-models.yaml truth (qwen3:8b: 8000→6144, nomic-embed-text: 1000→512).
Expand service-model mappings from 4 to 15+ services including hirag, archon,
coding, orchestrator, vl_sentinel, tts, extract_worker, and more.

Covers TAC branches B + C.

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

* feat(personas): integrate 8 standard persona seeds into initdb pipeline

Copy persona seeds from pmoves/db/v5_14_seed_standard_personas.sql into the
active Supabase initdb pipeline as 17_persona_seed.sql. Personas reference
claude-sonnet-4-5 (Developer/Creator/Analyst/Tester), claude-opus-4-5
(Researcher/Coordinator/Security), and claude-haiku-4-5 (Archivist).

Sequenced after model registry (12) to ensure model_preference references
are valid. Preserves ON CONFLICT (name, version) idempotency.

Covers TAC branch A.

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

* feat(gpu): sync gpu-models.yaml with SQL model registry

Add 10 models missing from gpu-models.yaml that exist in SQL and consume
local GPU VRAM: qwen2.5:32b, qwen2.5:14b, qwen2-vl:7b, qwen3-reranker:4b,
nemotron-mini, llama3.1, qwen3-embedding:4b/8b, embeddinggemma:300m.
GPU Orchestrator needs these entries for VRAM scheduling on RTX 5090.

Covers TAC branch D.

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

* feat(db): add persona-model resolution view for runtime agent identity lookup

Create persona_model_resolution view joining persona → model → provider
for runtime resolution of which API endpoint to call for each persona.
Also adds active_persona_summary convenience view. Grants SELECT to
PostgREST anon/auth roles.

Covers TAC branch F.

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

* feat(ops): add model-readiness check and Make target

Create model_readiness_check.py that validates:
- Supabase model_providers populated with ≥8 active providers
- Supabase personas table populated with ≥8 rows
- Ollama has expected local models pulled
- TensorZero gateway operational
- persona_model_resolution view returns valid data

Add 'make model-readiness' target and wire into verify-all chain.

Covers TAC branch E.

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

* fix(db): harden model/persona seed determinism and view security

* fix(ops): enforce readiness gate and close TAC doc drift

* fix(a2a): harden discovery/task auth and add agent-card endpoint

* fix(sql): harden studio_board RLS policy for service_role only

* fix(chat-relay): lazy-load supabase client to avoid path shadow in tests

* fix(ci): avoid hard failures in compose validation and yt docs tests

* fix(pmoves-yt): make boto3 optional at import time for test collection

* fix(pmoves-yt): stub tenacity when unavailable in CI test env

* chore(submodule): bump PMOVES-Agent-Zero for canonical agent-card parity

* chore(pr-scope): drop transcribe-and-fetch and cipher gitlink bumps from #744

* fix(a2a): address review blockers — RLS predicate, fail-closed key gate, discovery auth

B-1: studio_board RLS policy now restricts to service_role instead of using(true)
B-2: model-registry SUPABASE_SERVICE_KEY uses :? (fail-closed) instead of :- (empty)
B-3: discover_agents endpoint uses _require_discovery_auth instead of _require_task_auth

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

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Shaela Bello <slbello@uncg.edu>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Shaela Bello <slbello@uncg.edu>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
POWERFULMOVES added a commit that referenced this pull request Mar 2, 2026
* fix(security): auth-gate agent-zero A2A discovery endpoint

* fix(security): HMAC CHIT proofs + A2A discovery auth audit + dotnet preflight (#736)

* fix(security): use HMAC for CHIT proofs

* docs(security): add A2A discovery auth sweep findings

* chore(env): require dotnet sdk in bootstrap preflight

---------

Co-authored-by: Shaela Bello <slbello@uncg.edu>

* chore(deps): bump multer (#735)

Bumps the npm_and_yarn group with 1 update in the /CATACLYSM_STUDIOS_INC/L4-PLATFORM/provisions/docker-stacks/jellyfin-ai/api-gateway directory: [multer](https://github.com/expressjs/multer).


Updates `multer` from 2.0.2 to 2.1.0
- [Release notes](https://github.com/expressjs/multer/releases)
- [Changelog](https://github.com/expressjs/multer/blob/main/CHANGELOG.md)
- [Commits](expressjs/multer@v2.0.2...v2.1.0)

---
updated-dependencies:
- dependency-name: multer
  dependency-version: 2.1.0
  dependency-type: direct:production
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix(chit): correct FlOO$ PYTHONPATH for pr-monitor pipeline

* feat(chit): CHIT-signed Graphiti trail + skill pairing awareness (#739)

* fix(security): use HMAC for CHIT proofs

* docs(security): add A2A discovery auth sweep findings

* fix(security): update submodule pointers to 2026-03-01 review fix branches

Update gitlink pointers for 5 submodules to their security fix branches:
- BoTZ: auth-gate /.well-known/agent.json (PR #70)
- ToKenism-Multi: all P1/P2 cred defaults fixed (PR #46)
- Agent-Zero: path containment + supervisord users (PR #8)
- transcribe-and-fetch: openai v2 alignment + doc scrub (PR #44)
- DoX: secrets externalized + honest 501 (PR #114)

Also update review status doc with fix verification.

All 7 P1 and 20 P2 findings resolved. 4 dependabot PRs merged.

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

* chore(env): require dotnet sdk in bootstrap preflight

* feat(chit): add CHIT-signed Graphiti trail tooling

Add provenance signing for agent trail entries using CHIT HMAC:
- sign_trail.py: CLI tool to create and sign trail entries
- PostToolUse hook for automatic signing on trail file writes
- /chit:sign-trail skill command for interactive use
- Preflight check for dotnet SDK (required by CHIT crypto)
- CLAUDE.md documentation for trail signing workflow
- Settings.json hook registration

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

---------

Co-authored-by: Shaela Bello <slbello@uncg.edu>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* fix(runtime): service networking, healthchecks, SQL, Makefile hardening (#740)

* fix(security): use HMAC for CHIT proofs

* docs(security): add A2A discovery auth sweep findings

* fix(security): update submodule pointers to 2026-03-01 review fix branches

Update gitlink pointers for 5 submodules to their security fix branches:
- BoTZ: auth-gate /.well-known/agent.json (PR #70)
- ToKenism-Multi: all P1/P2 cred defaults fixed (PR #46)
- Agent-Zero: path containment + supervisord users (PR #8)
- transcribe-and-fetch: openai v2 alignment + doc scrub (PR #44)
- DoX: secrets externalized + honest 501 (PR #114)

Also update review status doc with fix verification.

All 7 P1 and 20 P2 findings resolved. 4 dependabot PRs merged.

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

* chore(env): require dotnet sdk in bootstrap preflight

* fix(compose): networking, healthchecks, and env hardening

- Fix external compose service networking and port bindings
- Add missing healthcheck configurations to n8n compose
- Update env.shared.example with new required variables
- Harden docker-compose.yml service definitions

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

* fix(services): auth, healthchecks, and dependency updates

- Agent Zero: Dockerfile non-root hardening, MCP server auth fixes
- service_registry: improve service discovery and health reporting
- evo-controller: add healthcheck endpoint and startup guards
- flute-gateway: fix import path
- render-webhook: update deps, add input validation
- retrieval-eval: add health and metrics endpoints

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

* fix(sql): RLS policies, model registry seeds, and supabase config

- Tighten RLS policies for public_init and geometry tables
- Update model registry seed data with current model versions
- Add studio board RLS migration for service_role access
- Add supabase .gitignore and config.toml for local dev

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

* fix(tooling): Makefile targets, smoke tests, and operational scripts

- Makefile: add sign-trail, volume-reset, and infra targets
- smoke.ps1: expand service coverage and timeout handling
- with-env.sh: support multi-tier env loading
- bringup_with_ui.sh: improve startup sequencing
- chit_security.py: fix HMAC signing edge cases
- retro_flightcheck.py: add new validation checks
- capture_evidence.sh: new script for PR evidence collection
- AI_GRAPHITI_PROTOCOL.md: document agent trail protocol
- pr-monitor.md: update skill command definition

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

* fix(submodules): update BoTZ-gateway and Cipher pointers

Update submodule pointers to latest reviewed commits from
2026-03-01 security sweep.

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

* docs(security): 2026-03-01 submodule security reviews and agent notes

- 5 submodule security reviews (Agent Zero, BoTZ, DoX, ToKenism, transcribe-and-fetch)
- Security queue tracker and sitrep JSON
- AGNOTE4482 FlOO$ and Flute agent notes
- CHIT review-sweep skill command and post-review hook

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

---------

Co-authored-by: Shaela Bello <slbello@uncg.edu>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* chore: add gitignore for runtime data and DAO docs (#743)

* fix(security): use HMAC for CHIT proofs

* docs(security): add A2A discovery auth sweep findings

* fix(security): update submodule pointers to 2026-03-01 review fix branches

Update gitlink pointers for 5 submodules to their security fix branches:
- BoTZ: auth-gate /.well-known/agent.json (PR #70)
- ToKenism-Multi: all P1/P2 cred defaults fixed (PR #46)
- Agent-Zero: path containment + supervisord users (PR #8)
- transcribe-and-fetch: openai v2 alignment + doc scrub (PR #44)
- DoX: secrets externalized + honest 501 (PR #114)

Also update review status doc with fix verification.

All 7 P1 and 20 P2 findings resolved. 4 dependabot PRs merged.

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

* chore(env): require dotnet sdk in bootstrap preflight

* chore: add gitignore for runtime data, DAO docs, and env backups

Add entries to prevent accidental commits of:
- pmoves/jellyfin-ai/ (runtime config/data from Jellyfin AI stack)
- pmoves/pmoves/PR_EVIDENCE/ (smoke test evidence artifacts)
- pmoves/docs/logs/pr_monitor_* (runtime PR monitor logs)
- CATACLYSM_STUDIOS_INC/PMOVES DAO/ (managed separately)
- pmoves/env.jellyfin-ai, pmoves/env.supa.runtime.bak.* (env backups)

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

---------

Co-authored-by: Shaela Bello <slbello@uncg.edu>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* feat(models): model registry reconciliation + persona seeds + readiness check (#741)

* fix(security): use HMAC for CHIT proofs

* docs(security): add A2A discovery auth sweep findings

* fix(security): update submodule pointers to 2026-03-01 review fix branches

Update gitlink pointers for 5 submodules to their security fix branches:
- BoTZ: auth-gate /.well-known/agent.json (PR #70)
- ToKenism-Multi: all P1/P2 cred defaults fixed (PR #46)
- Agent-Zero: path containment + supervisord users (PR #8)
- transcribe-and-fetch: openai v2 alignment + doc scrub (PR #44)
- DoX: secrets externalized + honest 501 (PR #114)

Also update review status doc with fix verification.

All 7 P1 and 20 P2 findings resolved. 4 dependabot PRs merged.

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

* chore(env): require dotnet sdk in bootstrap preflight

* docs(agents): overlay TAC model/persona readiness into graphiti protocol

* docs(agents): correct TAC status wording for local staged artifacts

* feat(models): reconcile model registry with Anthropic, TTS, and expanded service mappings

Add Anthropic provider (claude-sonnet-4-5, claude-opus-4-5, claude-haiku-4-5)
as persona backbone. Add TTS provider with 6 engines from Ultimate TTS Studio.
Add 5 missing Ollama models from gpu-models.yaml (qwen3:32b, qwen3:1.7b,
llama3.2:3b, codellama:7b, deepseek-coder:6.7b). Fix VRAM values to match
gpu-models.yaml truth (qwen3:8b: 8000→6144, nomic-embed-text: 1000→512).
Expand service-model mappings from 4 to 15+ services including hirag, archon,
coding, orchestrator, vl_sentinel, tts, extract_worker, and more.

Covers TAC branches B + C.

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

* feat(personas): integrate 8 standard persona seeds into initdb pipeline

Copy persona seeds from pmoves/db/v5_14_seed_standard_personas.sql into the
active Supabase initdb pipeline as 17_persona_seed.sql. Personas reference
claude-sonnet-4-5 (Developer/Creator/Analyst/Tester), claude-opus-4-5
(Researcher/Coordinator/Security), and claude-haiku-4-5 (Archivist).

Sequenced after model registry (12) to ensure model_preference references
are valid. Preserves ON CONFLICT (name, version) idempotency.

Covers TAC branch A.

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

* feat(gpu): sync gpu-models.yaml with SQL model registry

Add 10 models missing from gpu-models.yaml that exist in SQL and consume
local GPU VRAM: qwen2.5:32b, qwen2.5:14b, qwen2-vl:7b, qwen3-reranker:4b,
nemotron-mini, llama3.1, qwen3-embedding:4b/8b, embeddinggemma:300m.
GPU Orchestrator needs these entries for VRAM scheduling on RTX 5090.

Covers TAC branch D.

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

* feat(db): add persona-model resolution view for runtime agent identity lookup

Create persona_model_resolution view joining persona → model → provider
for runtime resolution of which API endpoint to call for each persona.
Also adds active_persona_summary convenience view. Grants SELECT to
PostgREST anon/auth roles.

Covers TAC branch F.

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

* feat(ops): add model-readiness check and Make target

Create model_readiness_check.py that validates:
- Supabase model_providers populated with ≥8 active providers
- Supabase personas table populated with ≥8 rows
- Ollama has expected local models pulled
- TensorZero gateway operational
- persona_model_resolution view returns valid data

Add 'make model-readiness' target and wire into verify-all chain.

Covers TAC branch E.

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

* fix(db): harden model/persona seed determinism and view security

* fix(ops): enforce readiness gate and close TAC doc drift

* fix(sql): harden studio_board RLS policy for service_role only

* fix(db): reconcile model provider upserts and enforce studio policy replacement

- update model_providers upserts to refresh mutable fields (type/api_base/api_key_env_var/description/active/metadata)\n- always replace studio_board_service_role_all policy in migration for upgrade parity\n- clarify persona resolution grant comment to match PostgREST role grants\n- add readiness-check type hints/constants and align TAC verify steps

* fix(security): tighten studio_board revokes and TensorZero reachability checks

* fix(readiness): enforce registry thresholds and harden studio_board revokes

---------

Co-authored-by: Shaela Bello <slbello@uncg.edu>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* docs(agents): comprehensive AGENTS directory review and cross-reference fixes (#742)

* docs(agents): update gap analysis with Phase 1 completions

- Mark Phase 1 roadmap items as complete (model registry, persona seeds,
  GPU models YAML, service-model mappings)
- Update CHIT integration status from None to Partial
- Add A2A MCP foundation status
- Update security hooks as implemented
- Refresh date to 2026-03-01

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

* docs(agents): add cross-references between operator docs

- AGENT_CONTEXT_PATTERNS: add hook portability warning for Windows
- CODEX_CIPHER_MEMORY: add cipher categories table for quick reference
- CODEX_OPERATOR_HOME: add known gaps link to gap analysis
- CODEX_RUNTIME_PROTOCOL: add Codex-Claude collision handling section

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

* docs(agents): create README.md index for 69-file directory

Add a start-here index document that catalogs all 69 files in the
AGENTS directory with descriptions and category groupings. Provides
newcomers a navigation map for the agent documentation corpus.

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

* docs(agents): add concrete persona seed examples to PERSONAS.md

- Add 4 worked examples (Developer, Creator, Researcher, Analyst)
  showing model_preference, chit_attribution, and tool_allowlist
- Document persona inheritance chain (seed SQL → Supabase row →
  agent_registry.yaml → runtime resolution view)
- Add CHIT attribution configuration section
- Add quick reference summary table for all 8 standard personas
- Cross-reference 17_persona_seed.sql from PR #741

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

* fix(registry): complete CHIT toggle coverage and Hi-RAG port split

- Add chit_toggles (encode, sign, bus_emit) to 9 infrastructure agents:
  nats-init, supabase-db, minio, qdrant, meilisearch, neo4j, prometheus,
  grafana, loki (all disabled — infra agents don't produce CHIT events)
- Add gpu_port: 8087 to hi-rag-gateway for v1/v2 port split
- Achieves 60/60 CHIT toggle coverage across all registered agents

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

* docs(agents): update SUBMODULE_CODEX_HOMES naming convention docs

- Document naming conventions for codex home files
- Add orphan tracking guidance for unmapped submodules
- Expand directory structure examples

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

* docs(agents): align persona status, topology ports, and gap metadata

---------

Co-authored-by: Shaela Bello <slbello@uncg.edu>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* chore: sync Hardened → main after #741-#745 merge batch (#746)

* chore(submodules): bump transcribe-and-fetch + cipher for A2A parity (#745)

* chore(submodules): bump transcribe-and-fetch and cipher for a2a auth parity

* chore(submodules): bump transcribe-and-fetch and cipher to merge-ready A2A heads

---------

Co-authored-by: Shaela Bello <slbello@uncg.edu>

* fix(a2a): secure discovery/task APIs and align with upstream agent-card path (#744)

* fix(security): use HMAC for CHIT proofs

* docs(security): add A2A discovery auth sweep findings

* fix(security): update submodule pointers to 2026-03-01 review fix branches

Update gitlink pointers for 5 submodules to their security fix branches:
- BoTZ: auth-gate /.well-known/agent.json (PR #70)
- ToKenism-Multi: all P1/P2 cred defaults fixed (PR #46)
- Agent-Zero: path containment + supervisord users (PR #8)
- transcribe-and-fetch: openai v2 alignment + doc scrub (PR #44)
- DoX: secrets externalized + honest 501 (PR #114)

Also update review status doc with fix verification.

All 7 P1 and 20 P2 findings resolved. 4 dependabot PRs merged.

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

* chore(env): require dotnet sdk in bootstrap preflight

* fix(security): auth-gate agent-zero A2A discovery endpoint

* fix(security): HMAC CHIT proofs + A2A discovery auth audit + dotnet preflight (#736)

* fix(security): use HMAC for CHIT proofs

* docs(security): add A2A discovery auth sweep findings

* chore(env): require dotnet sdk in bootstrap preflight

---------

Co-authored-by: Shaela Bello <slbello@uncg.edu>

* chore(deps): bump multer (#735)

Bumps the npm_and_yarn group with 1 update in the /CATACLYSM_STUDIOS_INC/L4-PLATFORM/provisions/docker-stacks/jellyfin-ai/api-gateway directory: [multer](https://github.com/expressjs/multer).


Updates `multer` from 2.0.2 to 2.1.0
- [Release notes](https://github.com/expressjs/multer/releases)
- [Changelog](https://github.com/expressjs/multer/blob/main/CHANGELOG.md)
- [Commits](expressjs/multer@v2.0.2...v2.1.0)

---
updated-dependencies:
- dependency-name: multer
  dependency-version: 2.1.0
  dependency-type: direct:production
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix(chit): correct FlOO$ PYTHONPATH for pr-monitor pipeline

* feat(chit): CHIT-signed Graphiti trail + skill pairing awareness (#739)

* fix(security): use HMAC for CHIT proofs

* docs(security): add A2A discovery auth sweep findings

* fix(security): update submodule pointers to 2026-03-01 review fix branches

Update gitlink pointers for 5 submodules to their security fix branches:
- BoTZ: auth-gate /.well-known/agent.json (PR #70)
- ToKenism-Multi: all P1/P2 cred defaults fixed (PR #46)
- Agent-Zero: path containment + supervisord users (PR #8)
- transcribe-and-fetch: openai v2 alignment + doc scrub (PR #44)
- DoX: secrets externalized + honest 501 (PR #114)

Also update review status doc with fix verification.

All 7 P1 and 20 P2 findings resolved. 4 dependabot PRs merged.

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

* chore(env): require dotnet sdk in bootstrap preflight

* feat(chit): add CHIT-signed Graphiti trail tooling

Add provenance signing for agent trail entries using CHIT HMAC:
- sign_trail.py: CLI tool to create and sign trail entries
- PostToolUse hook for automatic signing on trail file writes
- /chit:sign-trail skill command for interactive use
- Preflight check for dotnet SDK (required by CHIT crypto)
- CLAUDE.md documentation for trail signing workflow
- Settings.json hook registration

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

---------

Co-authored-by: Shaela Bello <slbello@uncg.edu>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* fix(runtime): service networking, healthchecks, SQL, Makefile hardening (#740)

* fix(security): use HMAC for CHIT proofs

* docs(security): add A2A discovery auth sweep findings

* fix(security): update submodule pointers to 2026-03-01 review fix branches

Update gitlink pointers for 5 submodules to their security fix branches:
- BoTZ: auth-gate /.well-known/agent.json (PR #70)
- ToKenism-Multi: all P1/P2 cred defaults fixed (PR #46)
- Agent-Zero: path containment + supervisord users (PR #8)
- transcribe-and-fetch: openai v2 alignment + doc scrub (PR #44)
- DoX: secrets externalized + honest 501 (PR #114)

Also update review status doc with fix verification.

All 7 P1 and 20 P2 findings resolved. 4 dependabot PRs merged.

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

* chore(env): require dotnet sdk in bootstrap preflight

* fix(compose): networking, healthchecks, and env hardening

- Fix external compose service networking and port bindings
- Add missing healthcheck configurations to n8n compose
- Update env.shared.example with new required variables
- Harden docker-compose.yml service definitions

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

* fix(services): auth, healthchecks, and dependency updates

- Agent Zero: Dockerfile non-root hardening, MCP server auth fixes
- service_registry: improve service discovery and health reporting
- evo-controller: add healthcheck endpoint and startup guards
- flute-gateway: fix import path
- render-webhook: update deps, add input validation
- retrieval-eval: add health and metrics endpoints

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

* fix(sql): RLS policies, model registry seeds, and supabase config

- Tighten RLS policies for public_init and geometry tables
- Update model registry seed data with current model versions
- Add studio board RLS migration for service_role access
- Add supabase .gitignore and config.toml for local dev

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

* fix(tooling): Makefile targets, smoke tests, and operational scripts

- Makefile: add sign-trail, volume-reset, and infra targets
- smoke.ps1: expand service coverage and timeout handling
- with-env.sh: support multi-tier env loading
- bringup_with_ui.sh: improve startup sequencing
- chit_security.py: fix HMAC signing edge cases
- retro_flightcheck.py: add new validation checks
- capture_evidence.sh: new script for PR evidence collection
- AI_GRAPHITI_PROTOCOL.md: document agent trail protocol
- pr-monitor.md: update skill command definition

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

* fix(submodules): update BoTZ-gateway and Cipher pointers

Update submodule pointers to latest reviewed commits from
2026-03-01 security sweep.

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

* docs(security): 2026-03-01 submodule security reviews and agent notes

- 5 submodule security reviews (Agent Zero, BoTZ, DoX, ToKenism, transcribe-and-fetch)
- Security queue tracker and sitrep JSON
- AGNOTE4482 FlOO$ and Flute agent notes
- CHIT review-sweep skill command and post-review hook

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

---------

Co-authored-by: Shaela Bello <slbello@uncg.edu>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* docs(agents): overlay TAC model/persona readiness into graphiti protocol

* docs(agents): correct TAC status wording for local staged artifacts

* feat(models): reconcile model registry with Anthropic, TTS, and expanded service mappings

Add Anthropic provider (claude-sonnet-4-5, claude-opus-4-5, claude-haiku-4-5)
as persona backbone. Add TTS provider with 6 engines from Ultimate TTS Studio.
Add 5 missing Ollama models from gpu-models.yaml (qwen3:32b, qwen3:1.7b,
llama3.2:3b, codellama:7b, deepseek-coder:6.7b). Fix VRAM values to match
gpu-models.yaml truth (qwen3:8b: 8000→6144, nomic-embed-text: 1000→512).
Expand service-model mappings from 4 to 15+ services including hirag, archon,
coding, orchestrator, vl_sentinel, tts, extract_worker, and more.

Covers TAC branches B + C.

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

* feat(personas): integrate 8 standard persona seeds into initdb pipeline

Copy persona seeds from pmoves/db/v5_14_seed_standard_personas.sql into the
active Supabase initdb pipeline as 17_persona_seed.sql. Personas reference
claude-sonnet-4-5 (Developer/Creator/Analyst/Tester), claude-opus-4-5
(Researcher/Coordinator/Security), and claude-haiku-4-5 (Archivist).

Sequenced after model registry (12) to ensure model_preference references
are valid. Preserves ON CONFLICT (name, version) idempotency.

Covers TAC branch A.

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

* feat(gpu): sync gpu-models.yaml with SQL model registry

Add 10 models missing from gpu-models.yaml that exist in SQL and consume
local GPU VRAM: qwen2.5:32b, qwen2.5:14b, qwen2-vl:7b, qwen3-reranker:4b,
nemotron-mini, llama3.1, qwen3-embedding:4b/8b, embeddinggemma:300m.
GPU Orchestrator needs these entries for VRAM scheduling on RTX 5090.

Covers TAC branch D.

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

* feat(db): add persona-model resolution view for runtime agent identity lookup

Create persona_model_resolution view joining persona → model → provider
for runtime resolution of which API endpoint to call for each persona.
Also adds active_persona_summary convenience view. Grants SELECT to
PostgREST anon/auth roles.

Covers TAC branch F.

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

* feat(ops): add model-readiness check and Make target

Create model_readiness_check.py that validates:
- Supabase model_providers populated with ≥8 active providers
- Supabase personas table populated with ≥8 rows
- Ollama has expected local models pulled
- TensorZero gateway operational
- persona_model_resolution view returns valid data

Add 'make model-readiness' target and wire into verify-all chain.

Covers TAC branch E.

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

* fix(db): harden model/persona seed determinism and view security

* fix(ops): enforce readiness gate and close TAC doc drift

* fix(a2a): harden discovery/task auth and add agent-card endpoint

* fix(sql): harden studio_board RLS policy for service_role only

* fix(chat-relay): lazy-load supabase client to avoid path shadow in tests

* fix(ci): avoid hard failures in compose validation and yt docs tests

* fix(pmoves-yt): make boto3 optional at import time for test collection

* fix(pmoves-yt): stub tenacity when unavailable in CI test env

* chore(submodule): bump PMOVES-Agent-Zero for canonical agent-card parity

* chore(pr-scope): drop transcribe-and-fetch and cipher gitlink bumps from #744

* fix(a2a): address review blockers — RLS predicate, fail-closed key gate, discovery auth

B-1: studio_board RLS policy now restricts to service_role instead of using(true)
B-2: model-registry SUPABASE_SERVICE_KEY uses :? (fail-closed) instead of :- (empty)
B-3: discover_agents endpoint uses _require_discovery_auth instead of _require_task_auth

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

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Shaela Bello <slbello@uncg.edu>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Shaela Bello <slbello@uncg.edu>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Shaela Bello <slbello@uncg.edu>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
@POWERFULMOVES
POWERFULMOVES deleted the fix/a2a-discovery-hardening branch March 9, 2026 20:57
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