blind-tribunal
Use when an autonomous change needs an independent grade before landing and no human is in the loop.
Skill by Tcuzzo
Chalk Labs
Need help deploying blind-tribunal?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/tcuzzo-blind-tribunal
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: testing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/blind-tribunal
What's inside
- Skill name
blind-tribunal- Description
- Use when an autonomous change needs an independent grade before landing and no human is in the loop. Convenes eight blind, cross-family jurors (one lens each — defect, proportion, operator consequence, reversibility, state continuity, resource economy, boundary condition, telemetry), each routed by tier to the cheapest model family that is sufficient, over an author-redacted envelope of whole files; every finding becomes a new failing test; loop until every juror passes. Trigger words: blind tribunal, grill tribunal, tribunal, jurors, eight lenses, cross-family grade, convene, blind grade, independent grade, grade before landing.
- License
- MIT
- Instructions
- 256 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Blind Tribunal
**Effort:** heavy — eight juror seats, one lens each, routed by tier to the cheapest sufficient model family and re-convened on fresh envelopes every round until unanimous; spend it on autonomous changes that land with no human review. Removes: rogue landings gated by nothing but the builder's own word.
The grading loop that lets the human walk away without the agent going rogue.
A panel of jurors reviews the change blind, with authorship stripped. Every
finding becomes a new failing test. The loop repeats until every juror passes.
Nothing lands on the builder's word alone.
## When to run it
- Before landing any autonomous change no human will review.
- Any high-blast-radius change: security-shaped, data-touching, authority-adjacent.
- When one grader is not enough and you want independent lenses on the same artifact.
## The seats
Eight jurors, one lens each. Each is a model from a DIFFERENT family than the builder
(same vendor = same family). A juror asked to check everything checks nothing well.
| Juror | Lens id | Tier | The question it asks |
| --- | --- | --- | --- |
| Defect | `defect` | generalist | What actually breaks? Logic flaws, syntax errors, new defects. |
| Proportion | `proportion` | generalist | Is this the right size? Over-engineered, or scaled to the intent? |
| Consequence | `operator_consequence` | operator safety | If a human operator runs this, what is destructive, unsafe, or harmful? |
| Reversibility | `reversibility` | deep state | Irreversible side effects? If it dies mid-run, can the system roll back cleanly? |
| Continuity | `state_continuity` | deep state | Orphaned variables, clobbered global state, dropped context downstream nodes need? |
| Economy | `resource_economy` | fast structural | Unoptimized loops, redundant network/API calls, memory bloat? |
| Boundary | `boundary_condition` | fast structural | Null, empty, wrong-typed, or malformed inputs — does it fail gracefully? |
| Telemetry | `telemetry` | operator safety | Can a failure here be diagnosed from the logs and error handling? |
## The routing tiers (cheapest sufficient route first)
Route each tier to what the lens needs, not to the biggest model you own:
- **deep state** (reversibility, state_continuity): your largest context + deepest
reasoning, ideally through an agentic harness that can READ the repository (never
write) so the juror can trace a state change from producer to consumer and run the
named tests. Run harness jurors read-only (`codex exec --sandbox read-only`; a
read-only tool catalog on a claude harness) and void any verdict whose dispatch
changed repository bytes, naming the paths. Header: *trace every state change across the whole workflow before you judge.*
- **fast structural** (boundary_condition, resource_economy): the cheapest fast route —
a free local GPU model first, **fused with a cheap cloud verifier** that judges the
same prompt: the lens passes only when BOTH pass; the verifier never re-seats the
primary's model; when every cloud rung is down the local verdict stands, flagged
**UNVERIFIED** in the review and the summary — never silently "verified". A local
model must see the WHOLE artifact or it does not judge: size the request's context
window to the prompt (`num_ctx` on Ollama — the server default is 4096 tokens and it
truncates silently; measured 2026-09-04, a 16B juror "passed" a 124 KB diff it never
saw, citing a file that does not exist) and refuse, before sending, a prompt the rung
cannot hold. The verifier never comes from the primary's FAMILY (same vendor =
same family), and an UNVERIFIED seat is a HOLD — never unanimity, never a pack
pass. After every local call read the node's own numbers: cap the answer
(`num_predict`), refuse an answer whose prompt filled the window
(`prompt_eval_count` + answer budget ≥ `num_ctx` is a measured truncation), and
check residency (`size_vram == size` on `/api/ps`) — a model spilled to system RAM
is unloaded and its answer discarded. Header: *work fast and literal from the code
in front of you.*
- **operator safety** (operator_consequence, telemetry): your strongest coder with
safety grounding. Header: *think as the human who runs this on their own machine.*
- **generalist** (defect, proportion): a reliable large generalist. Header: *precise
findings, no invented context.*
Every tier's ladder ends on a local survival rung, so the tribunal still convenes with
zero cloud. The premium accounts an IDE session holds (Claude Opus/Sonnet, Codex) are an
IDE-only lane for the deep-state seats: render the prompt files, pipe them in, drop the
verdicts into the same shape.
**Solo rig.** When only one model family is available, degrade EXPLICITLY: a
fresh context or session that never saw the author's conversation acts as the
blind grader, or the human reviews the redacted envelope. The report must name
the weakened gate ("graded same-family-blind, not cross-family"), never
silently pretend the cross-family gate held.
## The builder is declared, and the exclusion is structural
"Different family than the builder" was a rule jurors were asked to remember. In the
tribunal's own dogfood the operator-safety seat led with the very model that had built
the candidate, and nothing recorded or excluded it — the author graded its own work for
two rounds and every builder-is-not-grader claim on those rounds was unfounded. So:
- **Convene with the builder named** (`--builder <model-or-family>`). The run record
carries `builder_family`. Every rung of that family is refused out loud, before any
dispatch, on every ladder. A lens left with no rung HOLDS — it never falls back to the
builder because the builder was the only seat left.
- **Same vendor = same family** (`gpt-6-astra`, `gpt-5.6-sol`, `gpt-5.5` are one family).
One declaration excludes the vendor.
- **Prove it on the live ladder, not in a test:** after the first convene with the builder
declared, the routing table must show the builder's seats fell through to another
family. If it did not, the exclusion is decoration.
## The footer names the lens, a rejected rung keeps its words, and the floor is three rungs deep
Round 4 held two lenses with zero refusals, and every link was on the record. Three laws came out of it:
- **State the answer shape next to the answer.** The protocol footer carries the literal lens name (`"lens": "defect"`), never the `<your lens>` placeholder. A juror asked to recall the lens from 350 KB earlier, inside an artifact that names all eight lenses, answered the wrong lens three times in two rounds. Fill the placeholder at render time.
- **A rejected rung leaves its words on the record.** A wrong-lens answer or a voided verdict carries a bounded `raw_tail` on the rejected entry, so the next round reads the cause instead of inferring it.
- **Two cloud rungs is not a floor.** Every tier holds at least three rungs with no declared `context_tokens` (they can carry a 120k-token artifact) before its local tail. One wrong lens plus one void must never hold a lens.
- **A structured verdict never shares its budget with thinking.** A reasoning model asked for a bare JSON verdict spent its whole 65536-token budget thinking about a 131k-token artifact and emitted nothing (`finish_reason=length`); the role's time ceiling then killed the next rung mid-walk. Every cloud rung that asks for a JSON-object verdict runs with its reasoning channel off (`reasoning_effort: none`), and the verifier ladder keeps a plain-HTTP third family behind it.
- **Nothing else writes into the tribunal's repo while it convenes.** A concurrent grader's status file inside the checkout changed bytes under a seat, and the organ voided that verdict honestly: it cannot attribute a change. Serialize writers, or convene on a separate worktree of the same commit.
## The envelope
Jurors never see the builder or the conversation. They see one envelope:
- **Whole current files** for every file the change touched, plus its test files.
Never bare diff hunks — a hunk hides the surrounding contract and induces false findings.
- **The review contract**: the change's intent in one line, and the pass criteria.
- **Zero authorship.** No names, no model ids, no commit authors, no chat history.
If identity leaks through, the envelope build fails loud — never grade un-blind.
- **No prose about the old behavior.** Describing what the code "used to do" plants
phantom defects. The files speak for themselves.
- **Prior adjudications ride along.** A finding refuted with evidence in an earlier
round is appended as `PRIOR_ADJUDICATIONS`; jurors judge it honestly. Never re-seat
a juror to launder a refusal — fix the envelope or the code.
## Rendering the eight prompts (portable)
One prompt per lens: `<tier header>` + `<lens preamble>` + `<envelope>` + `<output protocol>`.
Any runtime can do it with a dozen lines; keep the lens text in ONE file your tests read.From Tcuzzo/HydraAgent_public, MIT.
More from Tcuzzo/HydraAgent_public
- 0.598score
architecture-engineer
Tcuzzo
Analyze BACKS architecture, detect structural drift, evaluate proposed changes against the rules file, and produce architecture decision records.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
conscientious-objector
Tcuzzo
Use when an IDE agent (Cursor, Codex, Claude Code) is operating inside BACKS / BACKSAIOS and a human-quality watchdog is needed to verify the harness is being…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
co-health
Tcuzzo
Use when the Conscientious Objector (or any watchdog) needs a health check on the operator's own cadence — proven live, on demand, never silently.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
clean-code-gauntlet
Tcuzzo
Use when hardening or landing any build (an agent, a service, a library) and you want a deterministic quality bar instead of a line-by-line review.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
cam-iot-inventory
Tcuzzo
Use when inventorying cameras/IoT/Wi-Fi on the live BACKS Secure console — MAC-sticky camera identity, honest wifi-scan, LO5 inventory≠picture.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
blind-eval
Tcuzzo
Use before landing anything where taste or output quality is the question and a test cannot decide it.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
backs-pack-sync
Tcuzzo
Use when the BACKS AIOS plugin pack has drifted from the BACKS source skills/ — a new BACKS skill exists that the IDE cannot discover because the plugin pack…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
bounded-loops
Tcuzzo
Use before starting any loop that can retry, poll, iterate, or call an external API — agent loops, repair loops, schedulers, watchers.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
architecture-engineer
Tcuzzo
Evaluate structure against the project that actually exists, not a remembered diagram or a generic architecture preference.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
absorb
Tcuzzo
Use when you need a capability an open-source project already provides — adopt it and re-engineer it as a native skill instead of inventing a duplicate.
SkillAFreshness: A★ 2Claude Code +9 - 0.593score
bughunt
Tcuzzo
Use when running a bounded parallel bug hunt that maps seams, verifies findings adversarially, and closes whole flaw classes.
SkillAFreshness: A★ 2Claude Code +9 - 0.593score
agent-build
Tcuzzo
Use when building an agent, bot, worker, or autonomous service with deterministic primitives, typed IO, and bounded loops.
SkillAFreshness: A★ 2Claude Code +9
Signals
- Stars
- 2
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 6, 2026 (25 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/Tcuzzo/HydraAgent_public
- Website
- tcuzzo.github.io/
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Tcuzzo
- 0.598score
bounded-loops
Tcuzzo
Use before starting any loop that can retry, poll, iterate, or call an external API — agent loops, repair loops, schedulers, watchers.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
architecture-engineer
Tcuzzo
Evaluate structure against the project that actually exists, not a remembered diagram or a generic architecture preference.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
absorb
Tcuzzo
Use when you need a capability an open-source project already provides — adopt it and re-engineer it as a native skill instead of inventing a duplicate.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
architecture-engineer
Tcuzzo
Analyze BACKS architecture, detect structural drift, evaluate proposed changes against the rules file, and produce architecture decision records.
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
backs-pack-sync
Tcuzzo
Use when the BACKS AIOS plugin pack has drifted from the BACKS source skills/ — a new BACKS skill exists that the IDE cannot discover because the plugin pack…
SkillAFreshness: A★ 2Claude Code +9 - 0.598score
blind-eval
Tcuzzo
Use before landing anything where taste or output quality is the question and a test cannot decide it.
SkillAFreshness: A★ 2Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get blind-tribunal running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
blind-tribunal skill. Agent Mart. https://agentmart.dev/skills/tcuzzo-blind-tribunal (last updated 2026-10-24)