parity-auditor

parity-auditor is an agent for Claude Code from oliver-kriska/claude-elixir-phoenix. It costs 56 tokens per session (2,837 once invoked), scanned A, original, MIT.

A verification agent that checks whether a rewritten software slice has actually met its stated obligations. It connects each required behavior, external contract, or guarantee to a test and a fresh piece of evidence.

In plain words
What is it for?
Use it when verifying an Elixir rewrite slice. It reviews acceptance checks, contract evidence, ledger entries, commands, run results, and source and target identities.
Why use it?
A passing test summary alone may miss requirements, use stale results, or verify a stub. This audit checks the obligations against the legacy source and rewrite records instead of trusting only the tests created during implementation.

Agent for Claude Code

Written for Claude Code: effort in frontmatter. Also seen: model in frontmatter; names the NotebookEdit tool.

Part of the rewrite plugin — 5 skills, 7 agents shipped together

Good fit Use it when verifying an Elixir rewrite slice. It reviews acceptance checks, contract evidence, ledger entries, commands, run results, and source and target identities.

Compare 6 agents from other repositories ↓
Install with agentmods
npx agentmods add agents/oliver-kriska/claude-elixir-phoenix/parity-auditor
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Clone the repo
git clone --depth 1 https://github.com/oliver-kriska/claude-elixir-phoenix

Made for: Claude Code.

Or install rewrite, the plugin that ships this one along with the rest of its 5 skills, 7 agents.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for parity-auditor

README.md
[![agentmods](https://agentmods.dev/badge/agents/oliver-kriska/claude-elixir-phoenix/parity-auditor/github.svg)](https://agentmods.dev/agents/oliver-kriska/claude-elixir-phoenix/parity-auditor)
Your own site
<a href="https://agentmods.dev/agents/oliver-kriska/claude-elixir-phoenix/parity-auditor"><img src="https://agentmods.dev/badge/agents/oliver-kriska/claude-elixir-phoenix/parity-auditor/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for parity-auditor

Your own site · 80×15
<a href="https://agentmods.dev/agents/oliver-kriska/claude-elixir-phoenix/parity-auditor"><img src="https://agentmods.dev/badge/agents/oliver-kriska/claude-elixir-phoenix/parity-auditor.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 56 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 2,837 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00056 $0.02837
Opus 5.5 $0.00022 $0.01135
Sonnet 5.5 $0.00011 $0.00567
Haiku 4.5 $0.00006 $0.00284

Measured today against content hash 1d00a8ec2aea, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

parity-auditor scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured today.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

plugins/rewrite/agents/parity-auditor.md · 208 lines

How it starts

The opening of the file, as written. The whole thing — 208 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Parity Auditor

You decide which obligations of a slice are proven, and by what. A progress note that says "all tests pass" is a lead to inspect, not proof. The obligation list comes from the rewrite artifacts, checked against the source, never from the tests the implementation happened to write. That list is the denominator.

Inputs (in your prompt)

  • TARGET — Elixir project root
  • SOURCE — legacy root; read it, never run it
  • COMPLETENESS — the slice's ledger IDs with their source anchors
  • OBLIGATIONS — the slice's interview.md (Acceptance Criteria, External contracts, ## Oracle), plus .claude/rewrite/analysis/features.md and contracts.md
  • LEDGER — .claude/rewrite/ledger.md (rows in the slice)
  • EVIDENCE — .claude/rewrite/verify/{slice}/evidence/*.md (command, exit status, target and source identity before and after, environment, log path), written by /rewrite:verify, and its run list commands.md
  • CURRENT_IDENTITY — head and content_fingerprint of TARGET and SOURCE, captured by the main session just before this audit
  • DECISIONS — ADRs with their Status under .claude/rewrite/architecture/, and .claude/rewrite/verify/accepted-risks.md
  • CLAIMS — files that assert results or record assumptions (progress.md, scratchpad.md, PR text), may be empty
  • OBLIGATION_IDS — ledger.py obligations output for the slice seed: its acceptance cases, the ledger IDs each cites, and any errors
  • PREVIOUS — the slice's last parity.md, moved aside before this audit; may be empty. Its rows, never its states, seed your matrix (step 2)
  • OUTPUT — .claude/rewrite/verify/{slice}/parity.md

Rules

  1. Read-only, no execution — do not run tests, the app or any script. Use grep, file reads and read-only git to inspect what the evidence says
  2. One assertion, one obligation — an acceptance probe, a contract witness and a ledger guarantee that state the same thing are one canonical row with aliases (C-01 = F-03.p1, M-01.g1). A second row needs a distinct probe that would test something the first does not
  3. The denominator is fixed — count every canonical obligation in scope; one without a test is not-run, never omitted. A source-supported obligation the analysis missed is an omission: add it, counted and labelled. A guarantee the source leaves open (unknown in the analysis, silent in the code) is a question, not an obligation. A guarantee stronger than the source shows is a strengthening, counted only when an accepted ADR adopts it. Deferred work the slice does not build is out of slice scope: listed, not counted, unless a scope disposition puts it in
  4. pass needs all of: a test that exercises the obligation's probe (read it), that test ran in an evidence record (not skipped or excluded), an exit status equal to the record's expected_exit (0 unless it names another), the record's target and source identity equal before and after the command, and its after identity equal to CURRENT_IDENTITY for both (head and content_fingerprint). Status or path text is diagnostic, never the freshness proof
  5. Stale beats pass — a record with missing, moved or out-of-date identity is stale
  6. Implementation and evidence are independent — failing, stale or missing evidence never by itself changes Impl. Propose an Impl change only from code you read: pending → implemented for each slice row whose target code exists in TARGET (cite the module); none, naming what is missing, when the code is partial or absent or another slice owns it. A row stays unverified until Impl says implemented
  7. Departures need approval — changed (ADR) and retired need an ADR whose Status is accepted and that names the obligation or its row. accepted risk needs an ## AR-NN record with Owner, Scope, Rationale, Review and Approved all filled, and the obligation in its Scope. A proposed or ASSUMED ADR, a bare heading or an empty field leaves the row in its evidence state, reported as an unapproved departure. Departures never count as verified; report them apart from it. In the ledger, though, a REPLACE or MAP row already states the approved new behavior in its Target: propose Evidence pass when a fresh witness of that Target passed, never not-run because an ADR changed the legacy behavior. The ledger's Departure column holds only AR-NN records
  8. Write your file before returning; return a summary under 15 lines

Read the full file on GitHub · 208 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. today First seen · 208 lines · 56 tokens per session scan A 1d00a8ec2aea

Subscribe to this mod's changes

parity-auditor is an agent published in the GitHub repository oliver-kriska/claude-elixir-phoenix (567 stars, last pushed today), licensed MIT. It adds 56 tokens to every session and 2,837 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-17.

Related

Other agents, from other repositories

edge-case-explorer

Systematically discovers and catalogs edge cases that should be covered by tests for a given piece of code. Traces input sources, call chains, and integration boundaries to find boundary values, type coercion traps, external input messiness, state-dependent failures, and error propagation gaps. Use when exploring how…

testdouble/han · 135 tokens

test-engineer

Examines code and plans tests focused on observable behavior — inputs, outputs, and collaborator interactions — rather than internal code paths. Identifies untested behaviors, recommends test doubles (stubs for queries, mock expectations for commands) for isolation, and produces a prioritized test plan with…

testdouble/han · 115 tokens

evidence-based-investigator

Investigates codebase issues by gathering concrete evidence — file paths, line numbers, code snippets, error messages, git history, and test coverage. Use when thorough, multi-angle research into a bug, failure, or unexpected behavior is needed. Does not trace runtime data flow across modules — use behavioral-analyst.…

testdouble/han · 85 tokens

ai-eval-engineer

Builds and maintains the eval pipeline for ai-system / agent-product archetypes. Outputs tests/eval/EVAL-.md files (golden citation, refuse-when-uncertain, output schema, prompt injection, cost-overrun, cross-user isolation). Runs regression on every prompt or model change. Detects drift.

avelikiy/great_cto · 71 tokens

codebase-explorer

Explores a codebase to discover implementation details for a specific feature or system. Finds entry points, core logic, data models, configuration, tests, and feature-type-specific artifacts. Use when thorough, multi-angle codebase discovery is needed for documentation or understanding. Does not research options or…

testdouble/han · 75 tokens

mobile-app-builder

React Native implementer for Product-Builder products whose users work in the field (home-services dispatch, construction field-docs, field-booking, delivery). Builds the mobile app to the design-advisor's RN contract with TDD — offline-first sync, camera/photo + location capture, push notifications, and…

avelikiy/great_cto · 122 tokens