Six-source research in the loop + stop VERITY/voice stacking - #4
Merged
Conversation
…le-5 review) Fable-5 code review of the ~10.3K lines written while Fable was unavailable (Jun 20–28) surfaced two unguarded input surfaces — both ironic for a safety harness: 1. repostream.materialize — path traversal / absolute-path escape. Wrote `dst / p` with `p` an UNTRUSTED GitHub tree path; pathlib makes `dst / "/abs"` == "/abs" and "../x" escapes dest. Now resolve()+relative_to() anchors every write inside dest; an escape is skipped and flips truncated=True (honest: never assert "safe" on a scan we couldn't complete). 2. websearch.fetch — SSRF / local-file read. urllib honors file://, ftp://, gopher://, and the URL can come from search results or a prompt-injectable model choice. fetch() is now http(s)-only; other schemes are refused. +2 offline regression tests (path-escape rejection, non-http refusal). Full suite: 101 passed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…xist (DRY/Rule-17 enforcement) A PreToolUse (Write|Edit) hook that HARD-BLOCKS creating a new tool/script/daemon until the agent has demonstrably searched for an existing one (prior-art evidence in the recent transcript). Docs/memory don't stop agents from rebuilding existing tools — an execution-time gate does. - Portable + env-configurable (REUSE_GATE_GLOBS / REUSE_GATE_EVIDENCE / CLAUDE_PROJECTS_DIR). - Guards only NEW files matching guarded globs; editing existing files always allowed; fail-open. - +12 deterministic offline tests (block paths, allow paths, edge cases: subdirs, spaces, malformed payload, non-Write tools, empty path). Validated 56/56 across repeated runs. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…y-discipline) Packages the three discipline gates as a one-install product: - reuse-first-gate (PreToolUse hook) — block rebuilding tools that exist - verity-discipline (skill) — search-before-concluding + safe-install playbook - /verity-scan (command) + verity_scan.py — ingest/repo prompt-injection scanner Adds .claude-plugin/marketplace.json so it installs via: /plugin marketplace add FutronPrime/verity-harness /plugin install verity-discipline Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…, deploy configs - billing.py: Stripe metered bridge (MeterEvents + usage-record fallback, never raises into request path) - landing/index.html: brand-matched landing (teal/magenta, Arial Narrow) - Dockerfile + fly.toml + render.yaml + requirements.txt: one-command deploy to any of 3 targets - DEPLOY.md: the 3 DJ-only inputs (Stripe key, target, domain) documented - Verified: /health, admin key-issue, /v1/scan UNSAFE detection, usage metering all pass Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- verity/cli_ensemble.py: council members from different labs (Claude/Codex/Gemini/Grok CLIs) — less-correlated blind spots than same-family tiers; degrades to whatever CLIs are installed - verity/council.py: --ensemble flag routes the 3-stage blind council over the cross-lab legs - cloud/app.py: /v1/council premium gate (10 units), verified running a real 3-member council - Wires the Fable-Council (Mixture-of-Agents) into VERITY's existing council + the metered API Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Resolved 21 curated X posts to concrete repos (syndication API + WebSearch + GitHub API), streamed every README (zero cloning), registered 13 net-new repos as monitored sources (20->33) - Adopted Karpathy 4 anti-pitfall principles as VERITY discipline (Think-Before-Coding, Simplicity- First, Surgical-Changes, Goal-Driven) — reinforces PRIME DIRECTIVE - Documented that @ziwenxu_ (OpenRouter Fusion) + rmux independently validate the cross-lab council --ensemble MoA gate shipped this session - Mapped auth0 auth-for-agents -> R61 human-gate model; claude-obsidian hybrid-retrieval -> memory Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Reachable-not-resident: catalog repos/skills, mount one on demand, gate it through 'verity vet', lease with a TTL, auto-release + reclaim disk. Reads stream (zero clone); only skills/executables materialize, ephemerally, after the vet clears. Portable (env-configured paths, no external deps). - verity/broker.py: add/find/show/use/active/release/sweep/stats - verity/__main__.py: wire 'broker'|'capability'|'jit' subcommand - docs/BROKER.md: pattern + usage + launchd auto-sweep example - Verified: full lifecycle mount→vet→lease→release; vet BLOCKs hostile instruction-surfaces Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… point - Top callout: 'reachable, not resident' — vet-gated on-demand capability mounting - New capability bullet in the autonomy section + docs link to BROKER.md - Positions the broker as solving 'install everything vs capability-starved' without supply-chain risk Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…pplies - verity/regression_ledger.py + 'verity fixed' subcommand: record a fixed bug, gate any plan/diff against it (exit 2 on regression risk) so solved bugs can't be silently reintroduced (Kochel technique) - docs/FABLE5-TECHNIQUES.md: 34 techniques from 3 practitioner videos mapped to VERITY; 1 refused (safety-refusal-neutralizer — out of scope for a discipline harness) - Verified: record -> check-clean(0) -> check-regression(2) catches a real Metal-GPU-crash reintroduction Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Every skill's name+description is always-on catalog tax. This audits a skills dir: static token cost + near-duplicate clusters (fast), real invocation scan (--with-usage → CUT list + reclaim estimate), and A/B lift (--ab: run a task with vs without a skill, report output divergence). Portable (VERITY_SKILLS_DIR / VERITY_TRANSCRIPTS_DIR). Applied from the Fable-5 'delete skills aggressively, keep only what lifts' technique. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… stacking loop: run_goal() now seeds six-source research (reddit/x/youtube/github/ stackoverflow/hn + web) on the goal and resolves `research: <q>` actions via deep_research instead of the shell — `verity loop` defaults to it (--no-web opts out). Closes the gap where the loop was the naive no-research baseline while the six-source engine only fed `verity deliberate`. autostart: add an atomic mkdir mutex + pgrep guard around the mascot launch. The SessionStart hook fires per agent session; concurrent runs raced Electron's single-instance lock and stacked 2-3 mascots (memory bloat -> OOM). Now one launch per herd; stale lock reclaimed after 2min. voice: listen() gets a process-level singleton guard — a second `verity voice listen` refuses to start (two listeners = double mic + overlapping TTS, the "voice going haywire" symptom; the mascot's per-instance flag couldn't see it). All three verified: injected-fake loop test, 3-way parallel autostart -> 1 instance, and a live second-listener refusal. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
FutronPrime
pushed a commit
that referenced
this pull request
Jul 26, 2026
# Conflicts: # tests/test_codex_enforcement.py # verity/autostart.py # verity/server.py # verity/youtube.py
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.
What
verity loopnow seeds and runs six-source research (GitHub/Reddit/X/YouTube/Google/HN-SO) — the loop consults the same research engineverity deliberateuses, instead of the naive optimistic baseline that guessed. Model can emitaction: "research: <q>"mid-run;--no-webopts out.Why
The autonomous loop was answering from priors without the research it already had wired elsewhere; and concurrent session starts stacked mascots/listeners into a memory pileup.
Test
run_goal: verified goal is seed-researched andresearch:actions route to six-source search, not the shell. Syntax-checked loop.py + main.py.🤖 Generated with Claude Code
Co-Authored-By: Claude Fable 5 noreply@anthropic.com