Miguel Sanz

Cardumen on vs. off: what we measure

How we design on/off comparisons with the same repo, model and task; what signals we observe and why the sample still demands caution.

Dos corrientes experimentales paralelas atraviesan los mismos puntos de medición antes de converger.

A number without experimental design is copy. That is why the first question is not “how much does Cardumen improve?”, but “which variable changed and who judged the result?”

Our comparison uses a kill switch: same repository, model and task; the harness changes from on to off.

What we try to isolate

Cardumen groups several pieces: code map, compiled memory, rules, result contract, guards and verification. An on/off test compares the complete system with a prompt that has no such scaffolding.

That lets us measure the combined effect. It does not let us attribute the entire change to one individual piece.

The minimum protocol

Same task

The question should touch enough architecture to require navigation and reasoning while preserving a verifiable answer.

Same environment

Model, version, repository, commit, prompt, permissions and tools. If one condition changes, record it.

External judge

The agent does not decide quality. Compare against tests, build, real code or an adversarial reviewer who verifies every claim.

Keep the worst cases

An expensive or slow run is not deleted because it looks anomalous. Variance and worst case matter when a team needs to budget time and cost.

What we have observed so far

In a real NestJS monorepo, a cross-service audit ran three times per arm with a frontier model. Average quality was the same in both arms, but cost was more stable with Cardumen:

  • with Cardumen: average of 13,211 tokens and standard deviation of 425;
  • without Cardumen: average of 20,587 tokens and standard deviation of 12,876;
  • the worst run without the harness reached 38,737 tokens, 23 turns and 9.6 minutes.

That result describes one task, one repository and six runs. It is directional evidence, not a universal promise.

In another test with local qwen3.5-9b on a repository rich in memory and graph data:

  • tokens fell from 312,991 to 178,581;
  • exploration went from 16 to 8 steps;
  • wall-clock time increased in that run.

The honest reading is not “everything improved”. The harness reduced exploration and tokens, but that case did not demonstrate lower latency.

What we measure

DimensionWhy it matters
Verifiable resultPrevents rewarding convincing but false answers
TokensApproximates cost and quota pressure
Wall-clock timeCaptures waiting and real overhead
Turns and toolsShows exploration and loops
VarianceReveals predictability
Worst caseExposes the risk hidden by the average

What we still cannot claim

We cannot generalize these results to every language, team or model. We also cannot claim that a local model matches a frontier model.

The current samples are small — between three and six runs depending on the test — and the repositories have particular conditions. Before turning a signal into a commercial promise, reproduce it in the buyer's environment.

Bring the protocol to your repository

  1. select a task that already has a judge;
  2. freeze commit, model, permissions and prompt;
  3. define metrics before running;
  4. run both arms several times;
  5. keep failures and outliers;
  6. publish the sample, conditions and limits alongside the number.

Good evidence does not remove uncertainty. It makes uncertainty visible.

Traceability

Sources and scope

  1. Cardumen evidence

    Public source for the runs, methodology, limits and on/off metrics cited in this article.

  2. Cardumen documentation

    Defines the harness components isolated in the comparisons: graph, memory, guards and verify.

  3. Cardumen security

    Sets the local-first model and data restrictions that apply when running tests on real repositories.