An open design question. No code is implied yet. This is here to be argued with before anything changes.
The premise. A frontier model is an expert on all code and a stranger to yours. It was trained on the world's public repos, so it regresses toward the global style, the textbook way to write a Rails service or a Go handler. A real codebase has a local dialect, and the gap between that dialect and the global prior is knowledge that exists nowhere except in your repo. Of Sense's four tools, conventions is the one that is fully local and not memorizable. A bigger context window does not help, because the local law is a statistical fact about the whole repo that no in-window sample makes legible.
The shift. Today a convention is a description, for example "47 of 50 classes end in Service." That is a fact, not a rule you can act on. To act, an agent needs three more things.
- The exceptions. Who are the 3 that break it? Without them you cannot tell a 48/48 absolute from a 30/50 tendency, or whether you would be joining a sanctioned exception or becoming violator number 4.
- The scope. The law in
app/services/billing may be 12/12 absolute while the project-wide number is loose. The rule that binds is the one where you are writing, not the blurred project average.
- The prohibition. "Models never call controllers here." A model trained on all of GitHub cannot infer a local absence, because absence is not something it can sample. This is the highest-value and least-replaceable signal.
The guardrail. Sense would not lint your candidate code. There is no "submit your diff and I will check it" surface, because that would break the read-only identity. Instead the law is made legible enough that the agent enforces it on itself. It asks what the law is where it is about to write and gets the rules, the exceptions, and how strict each one is. Enforcement happens in the agent's head. Sense stays a passive observer. This deepens one existing tool rather than adding a fifth.
The honest boundary. Not every convention can become a law. Only the ones with a well-defined population to measure exceptions against qualify, such as naming over a kind and scope, structural grouping, layer boundaries, and framework idioms. Things like inheritance cannot. "Who should have inherited from this base but did not" is not an honest question, and Sense will not fabricate a violator set.
The question for you. Is a normative-conventions surface worth the added output, and where is the line between a genuinely irreplaceable local law and noise an agent would be better off ignoring? This is a deliberate scope decision, which is why it is an RFC and not a PR.
An open design question. No code is implied yet. This is here to be argued with before anything changes.
The premise. A frontier model is an expert on all code and a stranger to yours. It was trained on the world's public repos, so it regresses toward the global style, the textbook way to write a Rails service or a Go handler. A real codebase has a local dialect, and the gap between that dialect and the global prior is knowledge that exists nowhere except in your repo. Of Sense's four tools, conventions is the one that is fully local and not memorizable. A bigger context window does not help, because the local law is a statistical fact about the whole repo that no in-window sample makes legible.
The shift. Today a convention is a description, for example "47 of 50 classes end in
Service." That is a fact, not a rule you can act on. To act, an agent needs three more things.app/services/billingmay be 12/12 absolute while the project-wide number is loose. The rule that binds is the one where you are writing, not the blurred project average.The guardrail. Sense would not lint your candidate code. There is no "submit your diff and I will check it" surface, because that would break the read-only identity. Instead the law is made legible enough that the agent enforces it on itself. It asks what the law is where it is about to write and gets the rules, the exceptions, and how strict each one is. Enforcement happens in the agent's head. Sense stays a passive observer. This deepens one existing tool rather than adding a fifth.
The honest boundary. Not every convention can become a law. Only the ones with a well-defined population to measure exceptions against qualify, such as naming over a kind and scope, structural grouping, layer boundaries, and framework idioms. Things like inheritance cannot. "Who should have inherited from this base but did not" is not an honest question, and Sense will not fabricate a violator set.
The question for you. Is a normative-conventions surface worth the added output, and where is the line between a genuinely irreplaceable local law and noise an agent would be better off ignoring? This is a deliberate scope decision, which is why it is an RFC and not a PR.