Prove

Count what was used, not what was stored.

Harbor counts how many rules reached an agent and how many the agent said it used. That second number is a floor, not a verdict, and the difference between those two words is the whole credibility of this page.

The two numbers

Every rule Harbor hands to an agent is numbered. You can see the numbers: at the start of a session Harbor prints a short receipt into your own transcript, listing what it served and the handle for each one. It lists five at most, and says how many more there were.

session startin your agent
⚓ 3 rules from your team
    #1  Migrations are files, never db push
        convention · pr: acme/acme-api#412
    #2  Handlers stay thin: validate, then call into src/services
        convention · pr: acme/acme-api#377
    #3  Background work goes on the queue, never in a request handler
        pattern · slack #backend

The agent sends those numbers back when it says its work was based on one. So there are two counts, and they answer two different questions.

ServedCited
What it countsRules handed to an agent, every delivery.Rules the agent said it based its work on.
What moves itHow well retrieval matched the task.Whether the rule was any use once it arrived.
What a low number meansNothing is reaching the session. Check that the repo is bound.Either the rules are not useful, or the agent used them without saying so.

A cite is not a proof

This is the sentence that makes the rest of the page worth reading. The cited count is a floor. An agent that follows a rule without mentioning its number is not counted, so real use can only be higher than what we report, never lower. It is also blank rather than zero when nobody was asked, because a search result carries no number to send back.

The inverse holds too, and it is the half a vendor is tempted to skip. A cited rule is not a proven rule. The agent said it based its work on that line; whether the work was correct, and whether the line deserved to be followed, are questions this instrument does not ask and cannot answer.

Reading harbor doctor

The command line reports the loop for the repo you are standing in. Each line names its own window and says whether it is scoped to this project or to the whole workspace, because a reader who assumes the wrong one is reading a smaller number than they think.

LineReadsThe denominator
RecallHow many sessions there were, and how many received anything at all.Sessions in the window.
FitThe average bundle size, and how many served rules went uncited.Served rules in the window. Warns below half.
AttributionWhether every session here carried a key we could count it by.Recalls in the window. Anything under 100% is a broken instrument, not a bad result.
ContributedWhat this repo captured: how many learnings, approved and pending.None. It is a count.
CorpusWhat the brain added and retired, and the commonest reason a rule left.None, and always workspace-wide.

Fit is the one worth staring at

Fit exists in the command line and nowhere else in the product, and the reason is that precision is the binding constraint. Serving more is easy. Serving fewer, better rules is the hard problem, and the only number that shows whether you are solving it is the share of what you sent that went unused.

It prints two things together for that reason: the average bundle size beside the uncited share. A bundle of twelve with half uncited and a bundle of two with half uncited are not the same situation, and a single percentage would hide which one you are in.

Attribution is not the cite rate

The two get confused because both are ratios about recall. Attribution asks whether a session could be counted; Fit asks what happened inside the sessions that could. An unkeyed recall is invisible to the loop, so Attribution below 100% means the measurement is broken and the fix is to re-run harbor init.

Reading Insights

The web app reports the same loop for the workspace, over a range you pick. Four blocks, in this order.

  • Brain impact. How many rules were applied across how many sessions. It opens the page because it is the only block on it a person would screenshot.
  • The loop. Is the brain reaching your sessions? Broken down by surface, with columns for rules sent, rules per delivery, and how many were used. Read per delivery beside used before comparing two rows: a surface that tops an agent up with one or two rules a turn and a surface that hands over a whole session bundle are doing different jobs, and their usage rates are not the same measurement.
  • Your brain. What was learned and what was dropped in the range, and how big the corpus is now. Rules learned, rules dropped, net change, rules in your brain, with the reasons they arrived and the reasons they left.
  • Reality timeline. Is any of it still true? The chronology of rules whose reality flipped.

What to do with a low cite rate

Subtract. A rule served every day and cited never is not a rule to reword, it is a rule to retire, and the corpus block is built to make that a normal thing to do rather than an admission. Net change can go down and that is not a bad sign: a rule that stopped being true should leave.

This is the opposite of the usual instinct, which is to add. Every rule you keep is paid for on every single turn, by every agent, in every session, whether or not it is ever used. Run harbor context to see the bill.

Why anyone should believe the gap exists

Not from our numbers. Over 138 tasks and four agents, ETH Zürich and LogicStar measured that a hand-written context file moved task success 2.4 points, a gain they could not tell from noise, a generated one moved it down, and either way the run cost about 20% more inference (arXiv:2602.11988, v2). That is the objection to Harbor as much as to anyone: context is not free and more of it is not better.

Which is why the answer here is a count rather than a claim. Harbor reads its rules out of work people already did, a person approves every one before an agent sees it, and then the loop reports how many of them were any use. Publishing our own figure for that would be asking you to trust the party with the most to gain.