Feat/langextract supabase realtime - #5
Merged
Conversation
added 21 commits
September 8, 2025 09:50
- Add understanding docs (vendor embedded repo) - Keep PDFs/DOCX; update .gitignore - Makefile heredoc fix for Windows - Add bootstrap/env check scripts and tools
…bmodule with files)
feat(hirag): normalize embeddings fallback + ensure cosine collection
chore(cuda): use CUDA wheels for torch (2.3.1+cu121) in media-*
…ntic extra_forbidden
…ors validation issue
… shims; docs updates
…): server-side roster; chore(make): add web-geometry target
… use preview before send
…server: /geometry/import_db
…ation with smart boundaries; /yt/emit CGP + upsert to HiRAG; hi-rag v2 /hirag/upsert-batch (+Meili); smoketests + docs.
… option; enhanced smoke test and docs.
…s) via Whisper segment heuristics; docs updated.
… checks: include pmoves-yt (8077) and ffmpeg-whisper (8078).
…ht target; docs: health section and usage.
…reflight HTTP checks; smoketests and docs for Discord/Jellyfin.
Contributor
|
Important Review skippedMore than 25% of the files skipped due to max files limit. The review is being skipped to prevent a low-quality review. 56 files out of 176 files are above the max files limit of 100. Please upgrade to Pro plan to get higher limits. You can disable this status message by setting the Note 🎁 Summarized by CodeRabbit FreeYour organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login. Comment |
POWERFULMOVES
pushed a commit
that referenced
this pull request
Dec 18, 2025
Updates PMOVES-Open-Notebook to 89db56a which includes: - fix(ci): use Claude GitHub App for authentication (#5) - Switches from API key to GitHub App connector - Resolves actionlint secrets context errors 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
28 tasks
POWERFULMOVES
pushed a commit
that referenced
this pull request
Jan 12, 2026
This commit addresses critical issues #4, #5, and #13 from PR #483 review. Changes to services/model_lifecycle.py: - Add idle_timeout_seconds parameter to LoadedModel creation - Fix load worker to call complete() in exception handler (prevents queue exhaustion) - Add nested try-except for complete() call itself - Create LoadedModel with ERROR state when VRAM insufficient - Set error_message with detailed VRAM information - Call failure callback before returning from VRAM insufficient path Changes to services/vllm_client.py: - Complete incomplete VRAM parsing implementation - Parse vllm:num_gpu_blocks metric and calculate VRAM (2MB per block) - Parse vllm:gpu_cache_usage_perc metric and estimate VRAM usage - Add proper error handling for parsing (ValueError, IndexError) - Add debug logging for metrics fetch failures - Fallback to 16384MB default if metrics unavailable Changes to metrics/prometheus.py: - Use model's configured idle_timeout instead of hardcoded 300 - Read idle_timeout_seconds from model's to_dict() output - Add helpful comment explaining the change These fixes ensure: - Load queue doesn't exhaust processing slots on errors - VRAM insufficient condition is properly tracked and reported - vLLM VRAM usage is calculated from actual Prometheus metrics - Idle timeout is configurable and consistent across all components 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
POWERFULMOVES
added a commit
that referenced
this pull request
Jan 18, 2026
…altime Feat/langextract supabase realtime
POWERFULMOVES
pushed a commit
that referenced
this pull request
Jan 18, 2026
This commit addresses critical issues #4, #5, and #13 from PR #483 review. Changes to services/model_lifecycle.py: - Add idle_timeout_seconds parameter to LoadedModel creation - Fix load worker to call complete() in exception handler (prevents queue exhaustion) - Add nested try-except for complete() call itself - Create LoadedModel with ERROR state when VRAM insufficient - Set error_message with detailed VRAM information - Call failure callback before returning from VRAM insufficient path Changes to services/vllm_client.py: - Complete incomplete VRAM parsing implementation - Parse vllm:num_gpu_blocks metric and calculate VRAM (2MB per block) - Parse vllm:gpu_cache_usage_perc metric and estimate VRAM usage - Add proper error handling for parsing (ValueError, IndexError) - Add debug logging for metrics fetch failures - Fallback to 16384MB default if metrics unavailable Changes to metrics/prometheus.py: - Use model's configured idle_timeout instead of hardcoded 300 - Read idle_timeout_seconds from model's to_dict() output - Add helpful comment explaining the change These fixes ensure: - Load queue doesn't exhaust processing slots on errors - VRAM insufficient condition is properly tracked and reported - vLLM VRAM usage is calculated from actual Prometheus metrics - Idle timeout is configurable and consistent across all components 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
POWERFULMOVES
pushed a commit
that referenced
this pull request
Feb 6, 2026
Addressed PR review findings for Supabase integration: - Fixed version check source (PyPI → npm registry for Supabase CLI) - Rewrote up-supabase with proper error handling and health checks - Added down-supabase, restart-supabase targets - Added network management (ensure-network, clean-networks) - Added setup-supabase-volumes for initial volume setup Error handling improvements: - Removed || true from DB readiness wait (now fails with context) - DB timeout shows container status and recent logs on failure - Volume copy errors are reported instead of silently ignored - Kong gateway wait has proper timeout and error message Healthcheck improvements: - supa-health checks Kong gateway (port 8000) - Auth service check now uses Kong gateway instead of direct port - Studio health check respects SUPABASE_STUDIO_PORT variable - Added container status table for visual verification Network management: - ensure-network creates pmoves-net if missing - clean-networks removes stale networks with empty labels - Fixes "incorrect label" errors from previous deployments Port standardization: - Studio port standardized to 54323 (was 65433 in some places) - All references updated for consistency Resolves: Issue #5 (up-supabase Makefile Target) from bring-up-findings Resolves: Issue #6 (Network Conflicts) from bring-up-findings 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
6 tasks
POWERFULMOVES
added a commit
that referenced
this pull request
Jul 11, 2026
… tool) (#2048) * feat(voice): Phase 0 — CHIT-sign-triggered expressive voice (no speak tool) An agent's normal CHIT trail-sign becomes an audible, persona-shaped utterance with NO speak tool call. Pieces: - sign_trail.py: env-gated (CHIT_SIGN_PUBLISH=1 + NATS_URL) best-effort publish of the signed payload to chit.signed.v1. No-op / behavior-identical when unset; fail-fast (never breaks signing). The sign IS the trigger. - voice_persona_bridge.py: maps the payload's selected_alter/voice (FlOO$ suits: mr-clean/dr-bean/buttercup/blossom/bubbles) -> Flute-Gateway intent + persona_id. Engine choice flows through the gateway's intent->engine routing (full expressive palette; kokoro=CPU floor only). 6 unit tests, all pass. - voice_cast_on_sign.py: the ONLY listener on chit.signed.v1 -> resolves bridge -> POST Flute-Gateway /v1/voice/synthesize/audio -> plays WAV. ffmpeg atempo tempo recovery; deterministic health check -> narrate/kokoro CPU-floor fallback when GPU unavailable; never crashes the daemon. Verified: py_compile all; bridge pytest 6/6; sign_trail behavior-identical when the env gate is unset (PYTHONPATH=repo-root per the known sign_trail invocation gotcha). Hearing it requires Ultimate TTS Studio (:7860) + NATS (:4222) — that's expected. Follow-ups (not blocking): flute-gateway gradio_client provider migration (piece 4), VOICE_CAST_ON_SIGN.md doc; and a design call — analytical personas (dr-bean) map to intent 'narrate' (kokoro floor); remap to dramatic+subtle to keep them on an expressive engine if desired. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(voice): address 5090-CLAUDE pair-review — subject, discriminator, auth (PR #2048) Three blocking contract-boundary fixes from the 5090 pair review: 1. Publish to agent.graphiti.signed.v1 (canonical raw signature.v1 subject), NOT chit.signed.v1 — that is a live multi-consumer channel (Consciousness 8106 / Tokenism 8103 / Evo 8113 / Fordham receipts) with a different {schema,tier} envelope. Avoids colliding two payload shapes on one subject. 2. voice_cast_on_sign discriminates on signature-shape fields (glyph + agent_id) before casting, so it can never speak a stray envelope (e.g. Fordham dues/ enrollment/mint receipts) that happens to carry a summary field. 3. _synthesize sends X-API-Key from FLUTE_API_KEY when set + logs 401 distinctly — the synth endpoint is behind verify_api_key on fleet nodes; without this it 401s silently (no audio, daemon looks fine). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(voice): apply non-blocking follow-ups from pair review (PR #2048) Addresses 5090-CLAUDE's pair-review findings #4-7 on the Phase 0 CHIT-sign-triggered voice pipeline (blocking findings already fixed in ad53f62): - finding #4: rewire the CPU floor to POST directly to the standalone Kokoro deploy unit (KOKORO_URL, default localhost:8004, #2024) instead of falling back to intent=narrate through the same Flute-Gateway/ultimate_tts stack that just failed -- a dead path. - finding #5: register agent.graphiti.signed.v1's voice-cast consumer relationship + env vars (CHIT_SIGN_PUBLISH, KOKORO_URL, KOKORO_TOKEN, FLUTE_API_KEY, FLUTE_GATEWAY_URL) in the new pmoves/tools/VOICE_CAST_ON_SIGN.md (pmoves/configs/nats-subjects.md does not exist yet). - finding #6: default NATS_URL to localhost (host-run daemon) instead of the Docker-internal `nats` hostname, which fails opaquely from a host shell; containers must now pass NATS_URL explicitly. - finding #7 (optional): documented the winsound SND_ASYNC overlap risk as a nice-to-have rather than adding scope. - cleanup nit: unlink the intermediate atempo *_tempo.wav after playback (delayed via estimated clip duration so it doesn't race the fire-and-forget player), leaving the primary cast WAV in place. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: Shaela Bello <slbello@uncg.edu>
This was referenced Jul 14, 2026
POWERFULMOVES
added a commit
that referenced
this pull request
Jul 15, 2026
…#2137) * chore(submodules): promote Pmoves-cipher + pmoves-cipher-mcp gitlinks Pmoves-cipher: 7525c00 → 1c9b2851 (origin/main) - fix(build): official node-gyp disturl + pnpm 9 workspace (#6) - feat(api): add /api/memory CRUD routes for cipher-mcp bridge (#5) - feat(cipher): switch to Ollama backend + MCP capabilities (#3) - feat(auth): add Bearer token authentication middleware - fix(security): auth-gate cipher A2A discovery endpoint (#1) pmoves-cipher-mcp: c2912967 → c633f436d (origin/PMOVES.AI-Edition-Hardened) - sync: catch hardened branch up to PMOVES.AI in-tree state (nats_events, stdio bridge, hardening, observability) Both commits verified on their origin remotes. Forward-only promotions. 💘 Generated with Crush Assisted-by: Crush:glm-5.2 * fix(model-suit): merge best of both GLM-5.2 suit versions + fill TBDs The #2087 rebase took the KiloCode-flavored suit (4 harness mappings, TBD architecture params). This merges both versions into the canonical bespoke suit: - Architecture: filled TBD → 744B+/40B+ MoE (from original #2104) - Harness mappings: merged 8 total (both KiloCode's 4 + Crush's 4): large_scale_implementation, deep_debugging, blueprint_implementation, agentic_workflow, multi_step_reasoning, code_review, automated_research, refactoring - CGP state vector: lower delta/Hz (flagship runs deeper, slower) - fallback_to: glm-5.1 (was glm-5-turbo — 5.1 is closer in quality) - Version bumped to 1.1.0 💘 Generated with Crush Assisted-by: Crush:glm-5.2
POWERFULMOVES
added a commit
that referenced
this pull request
Jul 17, 2026
Brainstormed design for the tractable first increment of the #5 governance replacement: an equal-weight (member/unit/share knob) governor with roll-% quorum and a modeled M-of-N committee finalize gate (crypto stubbed behind a pluggable TallySigner). Drop-in sim/bridge replacement for the plutocratic CoopGovernor, which stays intact as the sweep contrast. Stages 2–5 (real threshold crypto, voter-card credentials, secret-ballot integration, paper parity) are sequenced as later counsel-gated lanes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
POWERFULMOVES
added a commit
that referenced
this pull request
Jul 18, 2026
Bite-sized, red-first plan for stage 1 of the #5 governance replacement: roll+proposal+member-basis tally → castVote validation → basis contrast → roll-% quorum+pass → k-of-n finalize gate + TallySigner. Full code per step, CoopGovernor untouched, ends with PR + review + admin-merge. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
POWERFULMOVES
added a commit
that referenced
this pull request
Jul 18, 2026
Committee-controlled eligibility roll: enrol/revoke each require k-of-n committee approval (closes the enrollment chokepoint 08 flags), decoupled from tokens, roll() feeds EqualWeightGovernor.setRoll(). Crypto stubbed behind the same M-of-N gate pattern as stage 1. Stage 3 of the #5 arc. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
POWERFULMOVES
added a commit
that referenced
this pull request
Jul 18, 2026
Brainstormed design for the tractable first increment of the #5 governance replacement: an equal-weight (member/unit/share knob) governor with roll-% quorum and a modeled M-of-N committee finalize gate (crypto stubbed behind a pluggable TallySigner). Drop-in sim/bridge replacement for the plutocratic CoopGovernor, which stays intact as the sweep contrast. Stages 2–5 (real threshold crypto, voter-card credentials, secret-ballot integration, paper parity) are sequenced as later counsel-gated lanes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
POWERFULMOVES
added a commit
that referenced
this pull request
Jul 18, 2026
Bite-sized, red-first plan for stage 1 of the #5 governance replacement: roll+proposal+member-basis tally → castVote validation → basis contrast → roll-% quorum+pass → k-of-n finalize gate + TallySigner. Full code per step, CoopGovernor untouched, ends with PR + review + admin-merge. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
POWERFULMOVES
added a commit
that referenced
this pull request
Jul 18, 2026
Committee-controlled eligibility roll: enrol/revoke each require k-of-n committee approval (closes the enrollment chokepoint 08 flags), decoupled from tokens, roll() feeds EqualWeightGovernor.setRoll(). Crypto stubbed behind the same M-of-N gate pattern as stage 1. Stage 3 of the #5 arc. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
POWERFULMOVES
added a commit
that referenced
this pull request
Jul 18, 2026
…ign a contested ballot (#2154) * docs(fordham): ballot prior art + A2UI reconciliation — HMAC cannot sign a contested ballot The pilot package plans to receipt resident votes with sign_cgp() -- symmetric HMAC (chit_security.py:91). Whoever holds the key can forge any ballot and any tally, and the operator holds the key. For a contested governance vote, where the operator's neutrality is itself the question, that is disqualifying. It also defeats the record-keeping purpose: an artifact its own custodian can forge carries little evidentiary weight. Integrity against outsiders and verifiability against the operator are different properties; this needs the second one. Fix: Ed25519 -- and we already wrote it. PMOVES-ClawZ/ui/src/ui/ device-identity.ts on @noble/ed25519 3.1.0 already does keypair + SHA-256-fingerprint-as-id + persistence. Port that pattern; don't hand-roll crypto. (My first draft recorded "no Ed25519 anywhere in the repo" -- a survey result I hadn't checked. Wrong. The doc flags the error, because "we already built this and forgot" is the failure mode it exists to stop.) Also lands what neither lane had: voting-systems prior art. Repo-wide greps returned Benaloh 0 files, ElectionGuard 0, "coercion resistance" 0, Ostrom 0. Every design decision now tracks to a citation (Helios, Delaune/Kremer/Ryan, Juels/Catalano/Jakobsson, BeleniosRF, Estonian revoting, NY BCL 602). Findings: - Two lanes built the same thing and contradict each other on voting basis -- the decision this package's own README calls most consequential. The pilot lane is the better work; A2UI pm-ballot was built without reading it. - Helios -- the reference system -- scopes itself to LOW-COERCION environments. A contested cooperative recall is not one. - Receipt-freeness: #2153's nonce gives the voter a durable proof of their own vote, which a coercer can simply demand. Estonia time-limits verification (~30min) precisely because a durable receipt IS the coercion instrument. - status:"superseded" defeats revoting -- the anti-coercion mechanism only works if the ballot count stays secret. That is the documented Estonian eID-log leak, reproduced by design. - Petition and secret ballot are opposite instruments and cannot be one component. US labor law already encodes the split (authorization cards vs NLRB election). A provable ballot is a validity risk: counsel argues procedure, not merits. - NY practice: the managing agent is often the inspector of election. An inspector drawn from the incumbent side is structurally conflicted, whatever the facts of a given building -- and no amount of cryptography fixes a conflicted tabulator. - Research integrity: the "~500 vs ~750 tokens" collusion finding in articles_long.md is fabricated -- no simulation exists. The QV formula and the DAO constitution's quorum numbers are unsourced. Counter-example and standard to copy: ECONOMIC_MODEL_VALIDATION_REPORT.md (real bibliography, 34 tests, honest about its limits). Corrects two lines in the existing package: "one signing key underwrites both trust surfaces" holds for agent trails, fails for ballots; and the "ballot is just another CGP payload" reduction is what carries the HMAC flaw. Adds 5 items to the Legal Review Register and 3 Open Operator Decisions. Buildable today with no election-law exposure: the bylaws corpus, on the real pdf-ingest -> extract-worker -> Qdrant/Meili -> hi-rag-gateway-v2 chain. Note on framing: this repo squash-merges using COMMIT_MESSAGES, so commit text lands on main. Threats are described structurally here; no party is named. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(pr): address all CodeRabbit + Codex review comments on #2154 Review fixes: - amd-voice.yml: reset inherited NVIDIA device reservation (Codex P2), use compose service DNS for Ultimate TTS URL instead of host.docker.internal (Codex P2) - ballot prior-art doc: distinguish Ed25519 authentication from ballot secrecy, add key enrollment/revocation requirements (CR Major); make repo-wide grep claim reproducible with exact commands + revision (CR Minor); align pipeline status wording with §8 MODELED (CR Minor) - mcp_inventory.json + test_mcp_config_generator.py: update cipher SSE path from /mcp/sse to /api/mcp/sse to match actual endpoint (CR) Infrastructure fixes (session convergence): - docker-compose.yml: cipher-api Ollama URL → host.docker.internal + extra_hosts for GPU passthrough - crush-env.sh: new env resolver script for tier file ${VAR} chain resolution - crush-pmoves: source crush-env.sh before/after bootstrap - pmoves-mini: use .venv-pmoves Python (typer/PyYAML available) All 17 MCP config generator tests pass. * fix(crush-env): use BASH_SOURCE[0] directly for sourced path resolution The ${1:-...} fallback incorrectly picked up the caller's first positional argument when sourced. BASH_SOURCE[0] always resolves to the script's own path, which is the correct behavior for source. * docs(fordham): voter-identity key-custody + token-structure refresh decision records Two decision records extending the Fordham decision-record lane (07): 08-voter-identity-key-custody.md — decides how a resident's identity/key works for a contested ballot. An adversarial review inverted the intuitive "resident signs their vote" design: signing a choice is a coercion receipt, WebAuthn-primary disenfranchises an elderly electorate, and operator-run enrollment recreates forgeability. Corrected architecture: residents authenticate eligibility (they do not sign their choice); an election committee threshold-signs the tally (no single party can forge); a paper ballot is a first-class equal path; the eligibility credential is decoupled from Archon minting and the token structure. Generalizes to a two-mode primitive (adversarial/secret vs consensual/attributable) with a mode-separation invariant. TOKEN_STRUCTURE_REFRESH.md — the incentive engine beneath the consensual mode. Current structure carries a plutocratic on-chain layer (stake-locked voting power, freely-transferable token) contradicting a fair-but-unwired off-chain attribution layer (Dirichlet, everyone non-zero). Refresh direction: standing from real, agreed, kept commitments — not capital held/locked/traded. Concrete diffs: sever governance power from stake, make credit soul-bound, and wire distributeWeekly() to the existing Dirichlet weights instead of a Gaussian draw. Anti-extractive, anti-rent-seeking, anti-money-changing, anti-speculative by construction. Both DRAFT, REQUIRES LEGAL REVIEW (securities question counsel-gated). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(cataclysm): crystallize token-cooperative spec into the crosslinks bridge Refreshes the stale (2026-03-11) vision↔implementation bridge via a 9-agent fan-out reconciling CATACLYSM_STUDIOS_INC/ (L1–L5) against built code. Headline finding: there is no single token trinity — there are two competing designs. The DOCUMENTED trinity ($CAT governance / $WORK reputation SBT / $CRED spend credit) has zero code; the BUILT design is a dual-token FoodUSD+GroToken core (the design the DAO docs claim to supersede) plus mechanics + off-chain Dirichlet/commitment layer. Decision (Path A): built FoodUSD+GroToken is canonical for the sim/utility layer now; $CAT/$WORK/$CRED is the target governance-layer redesign. Adds the built⇄ documented mapping, spec⇄code gap matrix, 9 contradictions, binding boundaries, and 10 open decisions. Records the coordinator Dirichlet wire as done (PR #55). DRAFT — every clause touching a binding vote or token-as-investment is counsel-gated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * chore(submodule): bump PMOVES-ToKenism-Multi to pick up the token-refresh chain Forward bump 84b1620 -> d41bd8e on PMOVES.AI-Edition-Hardened, landing the full anti-extractive token-structure refresh + policy-variable weave-in: #53 distributeByAttribution (Dirichlet distribution) #54 CommitmentModel (commitment-first attribution) #55 coordinator wire — Gaussian retired from the sim flow #56 policy variables (contributionMeasure, soulbound) #57 scenario-sweep harness (Gini/concentration/D12 per policy) #58 concentration cap (maxConcentration) #59 FoodUSD vendor-lock (toward $CRED) Each PR independently code-reviewed and TDD-green (390 tests). Implements the directions in pmoves/docs/architecture/TOKEN_STRUCTURE_REFRESH.md and the open decisions parameterized in pmoves/docs/CATACLYSM_CROSSLINKS.md. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(cataclysm): mark parameterized open decisions + policy-knob library Round-2 weave-in landed (submodule #53–#59, gitlink bumped): the sweepable open decisions are now testable config knobs measured by the scenario-sweep harness, not pre-decided. Marks #4 (soulbound), #6 (concentration cap), #7 (FoodUSD vendor-lock) as PARAMETERIZED; adds a policy-variable table with measured Gini/ concentration effects; notes LoyaltyPoints/RewardsPool (#2) as the remaining dedicated increment. Distribution is now commitment-first + Dirichlet (Gaussian retired). DRAFT — counsel-gated where member-facing. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(spec): EqualWeightGovernor design (governance replacement, stage 1) Brainstormed design for the tractable first increment of the #5 governance replacement: an equal-weight (member/unit/share knob) governor with roll-% quorum and a modeled M-of-N committee finalize gate (crypto stubbed behind a pluggable TallySigner). Drop-in sim/bridge replacement for the plutocratic CoopGovernor, which stays intact as the sweep contrast. Stages 2–5 (real threshold crypto, voter-card credentials, secret-ballot integration, paper parity) are sequenced as later counsel-gated lanes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(plan): EqualWeightGovernor implementation plan (5 TDD tasks) Bite-sized, red-first plan for stage 1 of the #5 governance replacement: roll+proposal+member-basis tally → castVote validation → basis contrast → roll-% quorum+pass → k-of-n finalize gate + TallySigner. Full code per step, CoopGovernor untouched, ends with PR + review + admin-merge. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(ci): regenerate agents.yml overlay to clear compose drift * chore(submodule): bump PMOVES-ToKenism-Multi — EqualWeightGovernor (#60) Forward bump picking up PR #60: the equal-weight governor (member/unit/share knob, roll-% quorum, k-of-n committee finalize gate) — stage 1 of the #5 governance replacement. CoopGovernor left intact as the sweep contrast. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(spec): MemberRegistry design (governance replacement, stage 3) Committee-controlled eligibility roll: enrol/revoke each require k-of-n committee approval (closes the enrollment chokepoint 08 flags), decoupled from tokens, roll() feeds EqualWeightGovernor.setRoll(). Crypto stubbed behind the same M-of-N gate pattern as stage 1. Stage 3 of the #5 arc. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(plan): MemberRegistry implementation plan (3 TDD tasks) Enrol with k-of-n gate + config validation → revoke + active-only roll() → integration proof (roll drives the governor). Full code per step, imports EligibleMember from stage 1, no existing model modified. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * chore(submodule): bump — MemberRegistry (#61) + committee-genesis spec note Forward bump picking up PR #61: committee-controlled eligibility roll (M-of-N enrol/revoke) — stage 3 of the #5 governance replacement. Spec updated to state the committee-constitution trust assumption explicitly (review). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(gov): stage-2 Ed25519 multisig TallySigner design spec Real third-party-verifiable committee signature replacing MockThresholdSigner behind the same TallySigner interface. k-of-n Ed25519 multisig (not FROST — accountability is a feature at the tally layer); loose committee keyring; keys injected (custody documented, not coded); float-excluded netstring preimage shared by signer + verifier; verifyTallyAttestation is the third-party informing surface (public keys only). Honors fordham-hill/08 ('replaces single-operator HMAC') and the inform-not-decide north star. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
POWERFULMOVES
added a commit
that referenced
this pull request
Jul 24, 2026
…2204) The 2026-04-01 known-issue note claimed Pmoves-cipher lacks /api/memory routes. Operator flagged it stale and live verification agrees: fork PR #5 (2026-07-14 wave, with the Qdrant embedding sidecar, BM25+dense RRF hybrid search, and Ollama fallback) implemented the CRUD routes; the live API returns 401 (auth required), not 404. Note updated to point callers at the API key instead of assuming the routes are absent. Co-authored-by: Shaela Bello <slbello@uncg.edu> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
POWERFULMOVES
added a commit
that referenced
this pull request
Aug 2, 2026
P1 #1 (wire the gate): provenance_gate.py is now importable and wired into geometry_bridge.encode_packet (accepts voice_provenance meta) and _publish_chit_voice_event (accepts + forwards voice_provenance_meta). The gate is designed to be called by the cloned-voice synthesis path (S8) which does not exist yet — this PR delivers the gate + CGP plumbing, S8 will invoke it at the synthesis call site. P1 #2 (consent privacy): RLS read policy no longer exposes provenance rows for public voice profiles. Removed is_public from the SELECT policy — only owner and explicit grantee can read consent/provenance. Removed anon SELECT grant on the table. P1 #3 (blank artifact): DB constraint now uses NULLIF(btrim(consent_artifact_uri), '') IS NOT NULL. Python gate also validates non-blank artifact_uri. P1 #4 (evaluate all sources): Gate now iterates ALL active provenance records. If any source fails its rights check (CHARACTER_OWNED without context, CONSENTED with blank artifact), synthesis is rejected. P2 #5 (nullable unique): UNIQUE constraint now uses NULLS NOT DISTINCT so NULL source_url/timestamp values collide correctly. All fixes unit-tested: blank artifact rejected, multi-row blend with mixed rights correctly evaluates all sources, CHARACTER_OWNED with context passes. 💘 Generated with Crush Assisted-by: Crush:glm-5.2
POWERFULMOVES
added a commit
that referenced
this pull request
Aug 2, 2026
…ces (#2348) * feat(voice): S5 provenance gate — rights/consent model for cloned voices Implements the provenance gate from the voice agents design spec §8. Every cloned-voice synthesis must pass this gate before audio generation. - voice_cloning_provenance table: full rights/consent record per voice profile (source_type, rights_basis, consent_method, consent_artifact_uri, capturer_identity, attribution). RLS mirrors voice_profiles Q9 model. DB constraint enforces CONSENTED/LICENSED require artifact_uri. - provenance_gate.py: Python gate logic with 5 checks: (1) VOICE_CLONING_ENABLED env gate (default false) (2) active provenance record must exist (3) CHARACTER_OWNED requires active character context (4) CONSENTED/LICENSED require artifact (enforced at DB + app layer) (5) is_active=false (revoked) records ignored - build_cgp_meta(): returns voice_provenance block for CHIT CGP meta attribution injection (§8 requirement: cloned-voice synthesis injects minimal provenance into the geometry bus) S5 was blocked on S1 (now landed) and §10 Q5/Q8 (both resolved). Unblocked and unclaimed per AGNOTE4482PHI.t1.md orchestration map. 💘 Generated with Crush Assisted-by: Crush:glm-5.2 * fix(voice-s5): address all 4 P1 + 1 P2 review findings P1 #1 (wire the gate): provenance_gate.py is now importable and wired into geometry_bridge.encode_packet (accepts voice_provenance meta) and _publish_chit_voice_event (accepts + forwards voice_provenance_meta). The gate is designed to be called by the cloned-voice synthesis path (S8) which does not exist yet — this PR delivers the gate + CGP plumbing, S8 will invoke it at the synthesis call site. P1 #2 (consent privacy): RLS read policy no longer exposes provenance rows for public voice profiles. Removed is_public from the SELECT policy — only owner and explicit grantee can read consent/provenance. Removed anon SELECT grant on the table. P1 #3 (blank artifact): DB constraint now uses NULLIF(btrim(consent_artifact_uri), '') IS NOT NULL. Python gate also validates non-blank artifact_uri. P1 #4 (evaluate all sources): Gate now iterates ALL active provenance records. If any source fails its rights check (CHARACTER_OWNED without context, CONSENTED with blank artifact), synthesis is rejected. P2 #5 (nullable unique): UNIQUE constraint now uses NULLS NOT DISTINCT so NULL source_url/timestamp values collide correctly. All fixes unit-tested: blank artifact rejected, multi-row blend with mixed rights correctly evaluates all sources, CHARACTER_OWNED with context passes. 💘 Generated with Crush Assisted-by: Crush:glm-5.2
This was referenced Aug 3, 2026
POWERFULMOVES
added a commit
that referenced
this pull request
Aug 16, 2026
…st contact Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
POWERFULMOVES
added a commit
that referenced
this pull request
Aug 16, 2026
… wrong — plus the four silent handlers they led to (#2572) * docs(audit): six instruments that reported confidently and were wrong Joins the existing audit lane (#2522 ruleset exposure, #2525 CI enforcement, #2527 reproducibility) rather than opening a new one. Six checks on B850 reported a confident result that did not match reality — a 0-byte exporter behind 200 OK, a launcher that WARNed and exec'd anyway, a submodule audit measuring branch NAME instead of membership, a dmesg evicted by a failing USB keyboard, a health checker that printed 'Health: 0.0%' for a bus it never contacted, and this auditor reading an AttributeError as an ImportError and writing it into a Makefile comment as fact. Two shapes needing different remedies: three are mechanizable (a surface returning success while the payload is absent/stale/malformed — assert content, not status), three are not (a wrong question, unrelated noise destroying evidence, a misread). Deliberately does NOT restate the verification discipline. .claude/agents/verifier.md already specifies it — 'evidence before assertions ... capture verbatim ... state UNVERIFIED (environment) rather than approximating' — and predates this session. The documented gap is INVOCATION: that agent was invoked zero times during a session in which it would have caught finding #6 immediately. Records the mechanical traps, which are the genuinely new material: $() strips trailing newlines (bit four times in one evening), nats-py connect_timeout does not bound DNS, % and ${} in a systemd ExecStart are expanded by systemd, submodule branch name != membership and recorded gitlink != working tree. Notes that #2525's merge-gate finding has already been repaired (pytest_ratchet runs all 264 test files; the gate exit 1s) — verified before relying on it for merges. The audit lane is driving fixes ahead of its own PRs merging, which argues for landing it. Proposes the #2527 package as a calibration fixture: #2525 had to hand-roll a deliberately failing test to prove a check COULD fail; a frozen, hash-manifested, network-isolated package with six deterministic checks of known outcome is the standing form of that — a target whose answer is known, which every instrument in the table lacked. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix(instruments): four silent handlers that reported success outward An AST sweep for finding #7's cause (soft-import + broad except returning a plausible default) hit 157 sites. That number is itself the finding: torch, faiss, sentence_transformers, numpy, tqdm, rich and psutil guards are all CORRECT — the feature degrades and the caller is told. Narrowing to handlers that are silent (no log, no raise, no warn) gave 60; to those in a path that reports outward, 4. The antipattern is not "a broad except on an import". It is a silent handler in a path that reports outward. Fixed (logging only — no behaviour or contract change, best-effort delivery stays best-effort): sign_trail.py:77 substituted the whole agent identity in silence; now warns to stderr naming the reason. It already warned about a missing ALTER twenty lines below — it could report a missing persona but not a missing person. geometry.py:166,583 dropped every live subscriber and returned {"ok": true}. Eight lines up, the persist logs and raises HTTPException(500). Two disciplines, one function. hf-mcp-server:853 hf.model.gguf.converted.v1 never published while the caller was told everything worked. Left alone deliberately, as counterexamples of correct degradation: hf-mcp-server:542 stamps "source":"catalog" vs "registry" chit_security.py:13 sets an explicit _CRYPTO_OK = False common/__init__.py:41 optional exports fail loudly at the call site Verified: pmoves/tests/test_sign_trail.py 2 passed; unregistered agent-id now warns, registered b850-claude still resolves to glyph U+232C / #DC2626 with no warning; detector re-run shows only the two correct sites remaining. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * fix(geometry-bus-health): report the actual failure, and stop lying in JSON Running the merged checker on B850 for the first time exposed two gaps in the NOT MEASURED work itself: 1. The JSON branch still emitted "health_pct": 0.0 when the bus was never contacted. The human-readable branch had been fixed to refuse an unmeasured percentage; any dashboard consuming --json kept receiving the exact false negative. Now null, with an explicit "measured" flag. Fixed the instance, not the class — the same error this audit documents. 2. The failure report offered a list of GUESSES and no facts. The real cause was 'Authorization Violation' (the server requires credentials; this tool deliberately ships no credential-bearing default), but nats-py surfaces that through error_cb and keeps retrying, so the only exception reaching the caller was TimeoutError. The report therefore said "timed out" — reading as a network fault and sending the operator to check host and port, which were both already correct. An error_cb now captures what the server actually said, and the report leads with it before any guesses. Verified: no creds -> measured=False, health_pct=null, error="timed out after 5s connecting to nats://localhost:4222 — last server error: Error: nats: 'Authorization Violation'" connected -> health_pct=4.2, error=null, no NOT MEASURED banner (synthetic BusHealth; success path formatting unchanged) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * docs(audit): postscript — the fix for #5 was confidently wrong on first contact Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
3 tasks
POWERFULMOVES
added a commit
that referenced
this pull request
Aug 21, 2026
… an upstream (#2657) * fix(compose): p7 joins the ui profile so openroom's /api/p7 proxy has an upstream The OpenRoom nginx config proxies /api/p7 to the canonical p7 service (:8120), but p7 only carried the agents/p7 profiles while `make up-openroom` runs --profile ui — so the Known Road started openroom with no upstream and every session call would 502. Adds "ui" to p7's profile list. Pairs with PMOVES-OpenRoom fork PR #5 (fixes the upstream name/port mismatch in nginx on the fork side). Generated with Crush * fix(make): up-openroom brings up its p7 upstream too `up -d openroom` alone never started p7 even with p7 in the ui profile — compose only creates named services (no depends_on link). Name p7 explicitly so the /api/p7 proxy has its upstream on the Known Road. Generated with Crush * docs(compose): say which path the p7 ui profile actually carries The comment justified the profile addition with `make up-openroom`, but that is the one path it does not carry. Naming a service limits `up` to that service and its declared dependencies, and openroom has no `depends_on: p7` — which is why the companion commit names p7 outright in the target. What the profile membership does carry is the overlay path: `up-ui-new` runs `--profile ui up -d` with no service named, so profile membership is the only thing that starts p7 there. Both halves are load-bearing, on different paths; neither is redundant. Also records that `up-ui` is unaffected, since it names pmoves-ui — worth stating because widening a shared profile invites exactly that question. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --------- Co-authored-by: Agent Zero <agent.zero@pmoves.ai> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
This was referenced Aug 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.