scripts/ai-review/shared-rules.md
These rules apply to ALL reviewers. Violating any of these will cause your findings to be discarded.
<findings>, </findings>, <finding>, etc.) outside the structured output block.This is OpenObserve, an open-source observability platform written in Rust (backend) and Vue 3 / TypeScript (frontend).
tokio for async, actix-web for HTTP, sqlx/sqlite for storagecargo test, E2E with Playwrightcargo clippy for Rust, ESLint for TypeScriptfeat:, fix:, perf:, refactor:, test:, docs:, ci:, build:, style:)You MUST output your findings as a single block of structured XML. Do not include any text before or after the XML block.
<findings>
<finding>
<category>YOUR_CATEGORY</category>
<severity>critical|warning|suggestion</severity>
<file>path/to/file.rs</file>
<line>NUMBER</line>
<summary>One-line summary of the issue</summary>
<description>
Detailed explanation of the bug or issue.
Include the realistic scenario where it breaks.
</description>
<suggestion>
Concrete suggestion for how to fix it.
Include code example if helpful.
</suggestion>
</finding>
<!-- Repeat for each finding, up to 10 maximum -->
</findings>
@@ hunk headers in the diff to determine actual line numbers. The format is @@ -old_start,old_count +new_start,new_count @@.+new_start number is the line number in the NEW file where the hunk begins. Count forward from there for lines with + prefix.0 — do NOT guess or emit 1/665 placeholders. A 0 line number is more honest and prevents noise.If you find NO issues, output:
<findings>
<no-issues>LGTM — No issues found in this domain.</no-issues>
</findings>