AGENTS.md
+2 −1
https://raw.githubusercontent.com/reticlehq/reticle/HEAD/AGENTS.md
− 12. Telemetry is part of the feature. A new tool goes in `TOOLS`, and in `VERDICT_TOOLS` if it gives a verdict (`server/src/surface/tools/feedback-tools.ts`). A new finding kind goes in the enum in `core`. A dispatch path that skips `runTool` needs its own reporter. Telemetry fails silently, so read [`docs/telemetry-contract.md`](docs/telemetry-contract.md) before you change anything that sends an event.+ 12. Telemetry is part of the feature. A new tool goes in `TOOLS`, and in `VERDICT_TOOLS` if it gives a verdict (`server/src/surface/tools/feedback-tools.ts`). A new finding kind goes in the enum in `core`. A dispatch path that skips `runTool` needs its own reporter. Telemetry fails silently, so read [`contributing/telemetry/contract.md`](contributing/telemetry/contract.md) before you change anything that sends an event. [`contributing/telemetry/events.md`](contributing/telemetry/events.md) lists+ 17. Write for the reader, not for the shortest line. Do not nest a ternary inside a ternary. Use `if`/`else`, an early return or a lookup table. One plain `a ? b : c` is correct. Every `if` and `else` is a block in curly braces: `if (x) return y;` hides where the branch ends, and a line added under it runs every time. `no-nested-ternary` and `curly: all` are errors. Each package's `eslint-suppressions.json` records the nested ternaries and unbraced branches that were there when each rule started