Attempt to establish a syntax for files that should be ignored by aut…#1856
Attempt to establish a syntax for files that should be ignored by aut…#1856jdye64 wants to merge 1 commit intoNVIDIA:mainfrom
Conversation
…omated testing frameworks
Greptile SummaryThis PR introduces two documentation-only files: a
|
| Filename | Overview |
|---|---|
| .qaignore | New template file establishing the QA automation ignore convention; all entries are commented-out examples with no active rules — well structured and self-documenting. |
| QAIGNORE_SYNTAX.md | Comprehensive syntax reference for .qaignore; contains two internal spec contradictions (text:/i flag parsing vs. term-boundary rule; §2 header claims callers+callees but Details only describes callees) that should be resolved before the spec is implemented. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Read next line from .qaignore] --> B{Line content?}
B -->|Blank line| A
B -->|Starts with '# ' or '#' + non-digit| C[Comment — skip]
B -->|'#' followed by integer| D["§5 PR rule — look up PR diff,\nexclude all touched files/hunks"]
B -->|Starts with 'path:'| E["§1 Path/glob rule — match\nfull path or filename"]
B -->|Starts with 'fn:'| F["§2 Function rule — match name,\ntrace downstream call chain"]
B -->|Starts with 'cmd:'| G["§3 CLI command rule — prefix match\nagainst command invocations"]
B -->|Starts with 'text:'| H["§4 Content scan — wrap term in *...*,\ncheck /i suffix for case mode"]
C --> A
D --> I{First matching rule wins}
E --> I
F --> I
G --> I
H --> I
I -->|Match found| J[Exclude from QA analysis]
I -->|No match yet| A
J --> A
Prompt To Fix All With AI
This is a comment left during a code review.
Path: QAIGNORE_SYNTAX.md
Line: 173-175
Comment:
**`text:/i` flag contradicts the term-parsing rule**
Two statements in the `text:` section conflict: line 175 says "everything after `text: ` (up to end-of-line) is the search term," yet line 174 introduces `/i` as a suffix modifier that the parser must strip from the term before matching. Under the literal reading of line 175, `text: vlm_embedder/i` would search for the 17-character literal string `vlm_embedder/i`, not apply a case flag.
The Details section needs an explicit parsing rule like: "If the term ends with `/i`, that suffix is treated as a flag and stripped from the search term; everything before it is the actual match string."
How can I resolve this? If you propose a fix, please make it concise.
---
This is a comment left during a code review.
Path: QAIGNORE_SYNTAX.md
Line: 66-68
Comment:
**Section heading over-promises — "callers and callees" vs. Details**
The heading says the agent ignores "every function in its call chain (callers and callees traced by the agent)", but the Details only describe *callee* propagation (downstream chain) plus the narrow case of test functions whose "sole purpose" is to exercise the ignored function. Ignoring all *callers* would be extremely aggressive — any function that calls a widely-used utility would be silently excluded from QA. Either narrow the heading to match the described behavior ("and every function it calls") or explicitly document what "callers" means in this context and whether full upward propagation is intended.
How can I resolve this? If you propose a fix, please make it concise.
---
This is a comment left during a code review.
Path: QAIGNORE_SYNTAX.md
Line: 14
Comment:
**"First wins" diverges from `.gitignore` "last wins" — clarify the distinction**
The General Rules say "first matching rule wins," but `.gitignore` (which this file is explicitly "inspired by", and whose conventions §1 claims to follow) uses **last-rule-wins** so that later, more-specific rules can override earlier, broader ones. A user who writes a broad glob early and a narrow exception later will be surprised when the exception has no effect. Consider adding a note like "Unlike `.gitignore`, earlier rules take precedence; place more specific rules before broader ones" to prevent confusion.
How can I resolve this? If you propose a fix, please make it concise.Reviews (1): Last reviewed commit: "Attempt to establish a syntax for files ..." | Re-trigger Greptile
| - The match is **substring / wildcard** — the agent treats `text: foo` as `*foo*` applied to the full text of every file in scope. | ||
| - Matching is **case-sensitive** by default. Append `/i` to make it case-insensitive: `text: vlm_embedder/i`. | ||
| - The term can contain spaces; everything after `text: ` (up to end-of-line) is the search term. |
There was a problem hiding this comment.
text:/i flag contradicts the term-parsing rule
Two statements in the text: section conflict: line 175 says "everything after text: (up to end-of-line) is the search term," yet line 174 introduces /i as a suffix modifier that the parser must strip from the term before matching. Under the literal reading of line 175, text: vlm_embedder/i would search for the 17-character literal string vlm_embedder/i, not apply a case flag.
The Details section needs an explicit parsing rule like: "If the term ends with /i, that suffix is treated as a flag and stripped from the search term; everything before it is the actual match string."
Prompt To Fix With AI
This is a comment left during a code review.
Path: QAIGNORE_SYNTAX.md
Line: 173-175
Comment:
**`text:/i` flag contradicts the term-parsing rule**
Two statements in the `text:` section conflict: line 175 says "everything after `text: ` (up to end-of-line) is the search term," yet line 174 introduces `/i` as a suffix modifier that the parser must strip from the term before matching. Under the literal reading of line 175, `text: vlm_embedder/i` would search for the 17-character literal string `vlm_embedder/i`, not apply a case flag.
The Details section needs an explicit parsing rule like: "If the term ends with `/i`, that suffix is treated as a flag and stripped from the search term; everything before it is the actual match string."
How can I resolve this? If you propose a fix, please make it concise.| ## §2 — Functions & Invocation Chains (`fn:` prefix) | ||
|
|
||
| Ignore a specific function **and every function in its call chain** (callers and callees traced by the agent). |
There was a problem hiding this comment.
Section heading over-promises — "callers and callees" vs. Details
The heading says the agent ignores "every function in its call chain (callers and callees traced by the agent)", but the Details only describe callee propagation (downstream chain) plus the narrow case of test functions whose "sole purpose" is to exercise the ignored function. Ignoring all callers would be extremely aggressive — any function that calls a widely-used utility would be silently excluded from QA. Either narrow the heading to match the described behavior ("and every function it calls") or explicitly document what "callers" means in this context and whether full upward propagation is intended.
Prompt To Fix With AI
This is a comment left during a code review.
Path: QAIGNORE_SYNTAX.md
Line: 66-68
Comment:
**Section heading over-promises — "callers and callees" vs. Details**
The heading says the agent ignores "every function in its call chain (callers and callees traced by the agent)", but the Details only describe *callee* propagation (downstream chain) plus the narrow case of test functions whose "sole purpose" is to exercise the ignored function. Ignoring all *callers* would be extremely aggressive — any function that calls a widely-used utility would be silently excluded from QA. Either narrow the heading to match the described behavior ("and every function it calls") or explicitly document what "callers" means in this context and whether full upward propagation is intended.
How can I resolve this? If you propose a fix, please make it concise.| | **One pattern per line** | Each non-blank, non-comment line is a single ignore rule. | | ||
| | **Comments** | Lines starting with `#` that are **not** a valid PR pattern (see §4) are treated as comments and ignored by the parser. Use them freely for documentation. | | ||
| | **Blank lines** | Blank lines are ignored; use them to visually separate sections. | | ||
| | **Ordering** | Rules are evaluated top-to-bottom. The **first** matching rule wins. | |
There was a problem hiding this comment.
"First wins" diverges from
.gitignore "last wins" — clarify the distinction
The General Rules say "first matching rule wins," but .gitignore (which this file is explicitly "inspired by", and whose conventions §1 claims to follow) uses last-rule-wins so that later, more-specific rules can override earlier, broader ones. A user who writes a broad glob early and a narrow exception later will be surprised when the exception has no effect. Consider adding a note like "Unlike .gitignore, earlier rules take precedence; place more specific rules before broader ones" to prevent confusion.
Prompt To Fix With AI
This is a comment left during a code review.
Path: QAIGNORE_SYNTAX.md
Line: 14
Comment:
**"First wins" diverges from `.gitignore` "last wins" — clarify the distinction**
The General Rules say "first matching rule wins," but `.gitignore` (which this file is explicitly "inspired by", and whose conventions §1 claims to follow) uses **last-rule-wins** so that later, more-specific rules can override earlier, broader ones. A user who writes a broad glob early and a narrow exception later will be surprised when the exception has no effect. Consider adding a note like "Unlike `.gitignore`, earlier rules take precedence; place more specific rules before broader ones" to prevent confusion.
How can I resolve this? If you propose a fix, please make it concise.Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
…omated testing frameworks
Description
Checklist