Qualifier

Continuous Annotation, stored as files. CI and CD aren't enough anymore, CA records concerns, suggestions, and feedback the moment you see them. Humans and bots write the same format. No server, no database, just .qual files next to your source.

$ cargo install qualifier

The problem

Someone dropped 30,000 lines of slopcode in your lap and now you need to figure out if it does what it says on the tin. The test suite passes (mostly), the docs are "coming soon," and the last meaningful code review was three sprints ago. Where do you even start?

The problems you spot aren't associated with a current PR, so there's nowhere to put them. Qualifier gives you somewhere: a structured, VCS-native record pinned to the exact lines you read. Don't wait for review to annotate. Don't forget if a given PR doesn't include it. Let people and agents get to the work when it makes sense.

Three core concepts

Signals

Flag, comment, suggest, approve, reject. Record quality observations the moment you see them. No process, no PR required. Immutable once written, resolved when fixed.

Conversations

Reply to any signal, build threaded discussions, resolve when done. Conversations that survive merges, rebases, and the passage of time.

Ambient Review

Review isn't a gate you pass through, it's a practice that's always on. Flag any file, any time, whether it changed today or three years ago. Nothing slips through because there's no window to miss.

Ambient review

Code review today only catches what's in the current diff. Qualifier removes that constraint. Flag any file, any time. Annotations are pinned to the exact code you were looking at. When that code changes, qualifier review surfaces what's drifted.

Bots and humans write the same format. A CI pipeline flags a vulnerability. A code health agent suggests a refactoring. A teammate replies to either. Same files, same repo.

A day with Qualifier

You're reading src/auth.rs and notice the login handler isn't sanitizing input. You could file a ticket, fix it yourself, or mention it in Slack. Instead:

qualifier record concern src/auth.rs:42 "SQL injection risk in login handler"

Five seconds. The concern is recorded against the file and line, pinned to the exact code you're looking at. You go back to what you were doing.

Thursday, a teammate sees it and replies:

qualifier reply a1b2 "Parameterized queries added in 8f3c2a1"

Friday, you verify the fix and close it:

qualifier resolve a1b2

The whole conversation lives in your repo. git blame, git log, git diff all work on .qual files. Two months later, the code under your flag changes again. qualifier review surfaces the drift automatically.

Annotations are append-only, so merge conflicts are structurally impossible. Push straight to main. No branch, no PR, no ceremony. (Compaction rewrites the file and should be coordinated like any other maintenance task.)

Get started

Try Qualifier in your browser above, or install locally:

cargo install qualifier
qualifier record concern src/auth.rs:42 "SQL injection risk"

See CLI for the full command reference or Format for the file spec.