Product

How a repository gets measured.

Two layers that measure different things and don't cover for each other. This page explains what each one does, what it costs, and where its ceiling is.

The mechanical layer measures that things are there
The deep layer judges whether they tell the truth

Mechanical layer — measures presence

It runs over your git history metadata and a temporary read-only clone. 26 checks across five pillars: documentation, agent instructions, executability, history and structure. It calls no model: it's file reading and arithmetic.

Its ceiling: it measures that things ARE there, not that they tell the truth. A well-groomed shell scores well.

The rubric

Deep layer — judges substance

We write the probes; your own agent answers them on your machine or in your CI, with your credentials. Is this claim in the docs true against the code? Can you find where each responsibility lives? It contributes observations citing file and line; we do the arithmetic. We don't trust the judge: we trust the instrument.

Between 190,000 and 230,000 tokens and 6 to 11 minutes per run, almost regardless of your repository's size: what governs it is how many probes there are. Measured, not estimated.

How we know the two layers measure different things

A negative control. We cloned our own repository and falsified its documentation without touching a single line of code: paths that don't exist, invented commands, architecture described backwards. The files were still there, the same size and with the same live links.

Mechanical scoreno change

Δ 0

  • Documentation100 → 100
  • Agent instructions100 → 100
  • Executability92 → 92
  • History100 → 100
  • Structure99 → 99

773 lies · 90 documents · 2026-08-25

Deep-layer substantiation−27

87→ 60

  • Documentation truthfulness83 → 17
  • Semantic navigability83 → 83
  • Pattern consistency100 → 100
  • Business rules written downnot applicable

Autonomy bandL3 → L1

503 lies · 59 documents · real judge, 2026-08-12

The diagnosis doesn't end at a number

Every failed check brings its playbook: the principle, what to do, how it adapts to your repository's conventions, and the criterion by which it counts as closed. Your agent runs it, you approve the changes — the gate is human, always — and on the next analysis the check passes and the card closes by itself. Nobody declares victory by hand.

It connects over MCP

Claude Code, Codex, Cursor, and any client that speaks Model Context Protocol. The connector exposes the score, the findings, the remediation playbooks, and the deep layer's probes as tools your agent already knows how to use.

The diagnosis is free. Closing it is the work.

Every finding has a path, and the path ends when the re-analysis confirms it.

  1. 1

    Connect the repository

    GitHub or Bitbucket. We read your git history metadata; the code stays where it is.

  2. 2

    Get the score and the findings

    Five pillars, each one expandable down to the check that lowered it, with the evidence next to it.

  3. 3

    Your agent runs the remediation

    Over MCP we hand it the playbook for each failed check, adapted to your repo's conventions. You approve the changes: the gate is human, always.

  4. 4

    The score closes the card

    On the next analysis, if the check passes, the card closes by itself and says so. Nobody declares victory by hand.

Your code doesn't move. The one working in it is your agent, on your machine.

You connect the MCP client you already use and the deep analysis runs there, with your credentials. We send the questions; what comes back are observations citing file and line.

It runs where the code is

On your machine or in your CI. Nothing to upload anywhere, and no read access to hand us for the deep half.

With the client you already use

Claude Code, Codex, Cursor, or any client that speaks Model Context Protocol. The connector exposes the score, the findings and the playbooks as tools your agent already knows how to use.

And it rejects pasted code

Not a promise of good will: the connector's tools refuse file contents. From code we accept path:line and your description, never the literal quote.