Stet grades each incoming change as significant, normal, or trivial. The grade decides what leads your review queue, what warns you before you accept a batch, and in Hybrid folders, what waits for you while the rest lands on its own.
The grader is a fixed list of hand-written rules. Any one of these promotes a change to significant.
When two signals disagree, significant wins. Trivial has its own short list, whitespace, punctuation, capitalization, and a single swapped word, and it applies only when no significant signal is present. Everything else is normal. The full rule set is in the documentation.
No model is consulted. No network call is made. No text leaves your machine. The same change always gets the same grade, on any machine, offline, forever. You can read the rules and predict the output before you see it.
The rules are implemented twice, once in Rust and once in TypeScript, so the app can grade a change without a round trip between the two halves. The two copies are held to the same table of test cases, mirrored line for line between them, so they cannot drift apart without a test failing.
Grading also keeps its own counters, so Stet can tell you how much it caught. Those counters live in a JSON file inside your workspace folder, next to the documents they describe. They count events, never content, and they are not sent anywhere.
The reason to build it this way is not only privacy. A rules engine you can read is a rules engine you can audit. When Stet tells you a change is significant because a date moved, that is a claim you can check.