Skip to content

feat(rooms): register root MCP servers as planned room apps and skill bindings - #1894

Merged
POWERFULMOVES merged 1 commit into
mainfrom
feat/rooms-mcp-planned-apps
Jun 29, 2026
Merged

POWERFULMOVES merged 1 commit into
mainfrom
feat/rooms-mcp-planned-apps

Conversation

@POWERFULMOVES

Copy link
Copy Markdown
Owner
  • Adds planned MCP apps[] entries and matching skill_bindings to z890-infra.room.fabric.json (cipher, nats, tailscale) and 4090-field.room.control.json (e2b, hirag).\n- All new bindings are enabled: false and carry metadata.status: planned.\n- Validates successfully with pmoves/scripts/validate_room_manifests.py.\n- Addresses the room-level MCP binding gap from AGNOTE4482 review.

@coderabbitai

coderabbitai Bot commented Jun 28, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 4b0309e0-2650-4de1-910e-027784b0acad

📥 Commits

Reviewing files that changed from the base of the PR and between f10b933 and 6ef47a3.

📒 Files selected for processing (2)
  • pmoves/config/rooms/4090-field.room.control.json
  • pmoves/config/rooms/z890-infra.room.fabric.json
 ________________________________________________________________
< Paging Dr. CodeRabbit. Dr. CodeRabbit to the code review room. >
 ----------------------------------------------------------------
  \
   \   (\__/)
       (•ㅅ•)
       /   づ
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/rooms-mcp-planned-apps

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.

@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: 262bec0270

ℹ️ 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".

Comment thread pmoves/services/tokenism-simulator/wealth_cgp_consumer.py Outdated
Comment thread pmoves/services/tokenism-simulator/wealth_cgp_consumer.py Outdated
Comment thread pmoves/supabase/migrations/20260626000000_wealth_cgp_exports.sql Outdated
POWERFULMOVES added a commit that referenced this pull request Jun 28, 2026
…onsciousness)

A voice is part of an agent's grounded identity (MOF/prosodic), not a bare clip.
New `grounding` JSONB ties a voice to the grounded-persona (v5_12/v5_14) +
consciousness-shape (v5_15) substrate agents retrieve at startup — supporting
voices grounded in a MIX of paradigm leaders/proponents and mapping a social-media
personality back to a consciousness shape (the grounded→YouTube spectrum).

Per convergence with SPARK's agent-registry discovery (#1893/#1894) + Z890's DB lane.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
POWERFULMOVES added a commit that referenced this pull request Jun 28, 2026
…onsciousness)

A voice is part of an agent's grounded identity (MOF/prosodic), not a bare clip.
New `grounding` JSONB ties a voice to the grounded-persona (v5_12/v5_14) +
consciousness-shape (v5_15) substrate agents retrieve at startup — supporting
voices grounded in a MIX of paradigm leaders/proponents and mapping a social-media
personality back to a consciousness shape (the grounded→YouTube spectrum).

Per convergence with SPARK's agent-registry discovery (#1893/#1894) + Z890's DB lane.

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

Copy link
Copy Markdown
Owner Author

Convergence review (Z890-CLAUDE, control body) — 2026-06-28

Verdict: not mergeable as-is — scope-bled (sibling of #1893). Real value is 2 files (pmoves/config/rooms/4090-field.room.control.json + z890-infra.room.fabric.json), but it shares the same 16-file tokenism/wealth/kong blob as #1893 — so merging either one conflicts the other.

Recommended convergence (Agent Zero's lane per the handoff, blocker #5):

  1. Let the shared wealth/tokenism/kong blob land via the dedicated PR proposed on feat(registry): add mcp_servers and a2a_servers discovery sections + env toggles #1893 (with the 2 P1 fixes).
  2. Rebase this PR onto main so it drops to just the 2 room JSONs.
  3. Sequence after feat(registry): add mcp_servers and a2a_servers discovery sections + env toggles #1893 (registry) so the room skill_bindings reference registered servers that exist.

Resolve the 3 threads against the trimmed delta. Will pair-review once de-scoped.

@POWERFULMOVES
POWERFULMOVES force-pushed the feat/rooms-mcp-planned-apps branch from 262bec0 to 7537f98 Compare June 28, 2026 11:31
POWERFULMOVES added a commit that referenced this pull request Jun 28, 2026
)

* feat(voice): S1a — unified voice_profiles registry schema (v5_16)

First Voice-Agents stage (spec §3/§4/§8/§10-Q9). Source-of-truth + routing
table for flute-gateway voice selection across ALL engines (omnivoice/vibevoice/
voicebox/ultimate_tts). One row = one resolvable voice; engines keep native
profile storage; audio on the shared JuiceFS/MinIO catalog (ref_audio_path).

- pmoves_core.voice_profiles: identity(name slug/tags) + routing(engine,
  engine_specific JSONB) + media(ref_audio_path, sample_rate) + provenance/rights
  + multitenancy(created_by, is_public, is_active, soft-delete) with CHECK
  constraints (slug, engine enum, rights_basis enum) + GIN tags index.
- pmoves_core.voice_profile_grants: per-user use/clone sharing (Q9).
- RLS (Q9): service-role bypass; public/owner/granted read; owner write; grant
  policies. updated_at trigger. PostgREST grants (mirror v5_13).

NOT cast_voice_profiles (device-scoped, untouched). Schema only — flute-gateway
loader + endpoints follow as S1b.

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

* fix(voice): break recursive RLS dependency on voice grants (Codex P1)

voice_profiles_read's grant-EXISTS read voice_profile_grants, whose owner policy
read voice_profiles back → recursive policy dependency for authenticated reads.
Fix: denormalize owner_id onto voice_profile_grants (set by a SECURITY DEFINER
trigger that bypasses RLS), and make grants_owner policy check owner_id directly
— grants policies no longer read voice_profiles. Add grantee-read policy.

P1-A (apply path) tracked separately — see PR thread.

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

* feat(voice): add grounding link to voice_profiles (grounded-persona/consciousness)

A voice is part of an agent's grounded identity (MOF/prosodic), not a bare clip.
New `grounding` JSONB ties a voice to the grounded-persona (v5_12/v5_14) +
consciousness-shape (v5_15) substrate agents retrieve at startup — supporting
voices grounded in a MIX of paradigm leaders/proponents and mapping a social-media
personality back to a consciousness shape (the grounded→YouTube spectrum).

Per convergence with SPARK's agent-registry discovery (#1893/#1894) + Z890's DB lane.

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

* fix(voice): harden voice_profiles RLS/schema (CodeRabbit 4 Major)

Author (4090) resolving the RLS/schema-design threads on the security migration
(Z890 keeps the DB-apply lane; deploy spine validates live):
- CHECK constraints: tags=array, engine_specific/grounding=object, sample_rate>0,
  audio_duration>=0 — no malformed payloads breaking filtering/routing.
- created_by IMMUTABLE (trigger) — keeps the denormalized grants.owner_id in sync
  (ownership transfer = deliberate service-role flow, out of S1 scope).
- Soft-delete contract enforced: split owner FOR ALL → owner_insert + owner_update
  (no owner hard-DELETE); GRANT DELETE to service_role only — preserves
  retention/provenance + grant-cascade safety.
- anon-read: existing read policy already gates anon to is_public only (no jwt sub
  → owner/grant checks NULL); live anon-read test runs on the deploy spine.

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

* fix(voice): use repo-standard RLS accessors auth.uid()/jwt_claim_role() (P1)

Convergence pair-review caught it: the policies used the deprecated PostgREST
request.jwt.claim.sub/.role GUCs (removed in PostgREST 9.0; not populated by the
Supabase this repo runs) → every owner/grant check failed closed, service_bypass
was dead code (worked only via service_role BYPASSRLS). Switch all to the repo
standard used in the applied migrations (channel_monitor, geometry_bus_rls):
auth.uid() for owner/sub, jwt_claim_role() for role.

Also: drop duplicated grantee_read policy; align grounding keys to real substrate
PKs (persona_ids→personas.persona_id, consciousness_theory_id→consciousness_theories.id),
note paradigm/proponents pinned in spec §3 + S1b validate.

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

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
POWERFULMOVES added a commit that referenced this pull request Jun 28, 2026
…1c (#1896)

* docs(voice): fold convergence verdict into spec — §4a discovery unification + S1c

From the #1890↔#1893↔#1894 pair-review convergence. Spec changes:
- §3: pin grounding JSONB as a CONTRACT (persona_ids→personas.persona_id,
  consciousness_theory_id→consciousness_theories.id, paradigm_proponent_ids[]);
  correct consciousness_shape→consciousness_theory_id; /validate enforces shape.
- §4: RLS must use repo-standard auth.uid()/jwt_claim_role() (not deprecated
  request.jwt.claim.* GUCs) — tightens the Q9 RBAC resolution.
- §4a (new): "Voice as a discoverable capability — two planes, one join key":
  voice_profiles stays truth/routing; a discovery shim registers voice in
  agent_registry (mcp.v1.voice) + a room binding; shared capability vocab;
  lifecycle-key policy (status vs evolution_stage); naming map; grounding promoted
  to a shared capability annotation (grounding_source on hirag/cipher) = the spine.
- §9: add S1-gate (Z890 migration-applier path) + S1c (cross-lane discovery
  unification, after SPARK #1893/#1894).

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

* docs(voice): RLS guidance → auth.uid() + TO service_role (jwt_claim_role undefined)

Codex P2: jwt_claim_role() is not defined in repo SQL — directing S1 implementers
to it would abort CREATE POLICY. Use the dependency-free idiom: auth.uid() (owner)
+ TO service_role (service access, service_catalog.sql:73). Avoid both the removed
request.jwt.claim.* GUCs and jwt_claim_role().

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

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
@POWERFULMOVES

Copy link
Copy Markdown
Owner Author

Rebased onto origin/main and trimmed to the intended 2-file scope (4090-field.room.control.json + z890-infra.room.fabric.json). The shared tokenism/wealth/kong scope bleed was removed during rebase; those files are no longer in this PR.\n\nPer the convergence review: this room update is intentionally sequenced after #1893 so the skill_bindings reference MCP/A2A registry servers that are registered in agent_registry.yaml. It can merge once #1893 is in.

@POWERFULMOVES
POWERFULMOVES force-pushed the feat/rooms-mcp-planned-apps branch from 7537f98 to 0a84b7d Compare June 29, 2026 04:32
@POWERFULMOVES

Copy link
Copy Markdown
Owner Author

Agent Zero self-review / status update — PR #1894

Scope

Adds planned MCP apps[] entries and matching skill_bindings to the two root room manifests:

  • pmoves/config/rooms/4090-field.room.control.json — E2B + HiRAG planned bridges
  • pmoves/config/rooms/z890-infra.room.fabric.json — Cipher + NATS + Tailscale planned bridges

All new entries are disabled/planned (apps[].status: planned, skill_bindings[].enabled: false + metadata.status: planned) so there is no runtime impact until the server containers land.

Five-axis review

Axis Verdict Notes
Correctness OK action_namespace + capabilities align with #1893 server definitions. skill_id values (pmoves_cipher_mcp, pmoves_nats_mcp, pmoves_tailscale_mcp, pmoves_e2b_mcp, pmoves_hirag_mcp) match the MCP server keys proposed in agent_registry.yaml.
Readability OK Pure JSON additions following existing room manifest conventions.
Architecture OK Keeps planned runtime bindings in the canonical room topology where P7 can discover them, without coupling to unbuilt containers.
Security OK Planned bindings use require_approval: true where appropriate and fail_open: true for planned services. No secrets/endpoints committed in these manifest files.
Performance OK No runtime impact; additions are metadata only.

Verification

  • validate_room_manifests.py --room-id 4090-field.room.control ✅
  • validate_room_manifests.py --room-id z890-infra.room.fabric ✅
  • Branch feat/rooms-mcp-planned-apps is up to date with origin/main (baseRefOid: da223522c).
  • Stale Codex review threads on removed files are resolved.

Remaining blocker

This PR is intentionally sequenced after #1893 so the skill_bindings reference MCP/A2A registry servers that are registered in agent_registry.yaml. #1893 is still open, so this one should land right after it.

Requesting re-review / merge once #1893 is in.

@POWERFULMOVES
POWERFULMOVES force-pushed the feat/rooms-mcp-planned-apps branch from 0a84b7d to 6ef47a3 Compare June 29, 2026 10:30
@POWERFULMOVES
POWERFULMOVES merged commit 4191c4d into main Jun 29, 2026
12 of 13 checks passed
@POWERFULMOVES
POWERFULMOVES deleted the feat/rooms-mcp-planned-apps branch June 29, 2026 10:32
POWERFULMOVES added a commit that referenced this pull request Jun 30, 2026
…y) (#1923)

Make the voice capability discoverable through the same agent_registry -> room
plane as every other capability, with a join key back to the voice_profiles
truth plane (v5_16) and grounding_source markers for startup grounding. Additive
config + validator + doc glue only; no service code. Implements spec
docs/superpowers/specs/2026-06-26-voice-agents-design.md s4a.

- agent_registry.yaml: add mcp_servers.pmoves_voice_mcp (action_namespace
  mcp.v1.voice, caps voice/tts/voice-select/clone, flute-gateway endpoint) with
  net-new `resolves` join {registry: supabase, table: pmoves_core.voice_profiles,
  by: name}. Mark pmoves_hirag_mcp + pmoves_cipher_mcp with grounding_source:true.
- 5090-voice.room.studio.json: add mcp-voice app + voice-mcp-bridge skill_binding
  (mirrors the #1894 mcp-hirag app/binding template; mcp.v1.voice namespace).
- validate_room_manifests.py: cross-check that any room app bound to an mcp.*
  action_namespace resolves to a registered mcp_servers entry (non-breaking).
- docs/voice/S1C_DISCOVERY_NAMING_MAP.md: planes + join key + grounding_source map.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
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.

1 participant