-
Notifications
You must be signed in to change notification settings - Fork 1
Fix/verifier contentless issues #325
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -4,6 +4,90 @@ const { | |||||||||||||
| parseScopeTasksAcceptanceSections, | ||||||||||||||
| } = require('./issue_scope_parser.js'); | ||||||||||||||
|
|
||||||||||||||
| /** | ||||||||||||||
| * Check if content is a placeholder (missing section marker). | ||||||||||||||
| * These placeholders are generated by the bot when PR/issue lacks structured content. | ||||||||||||||
| * | ||||||||||||||
| * @param {string} text - Text to check | ||||||||||||||
| * @returns {boolean} True if text is a placeholder | ||||||||||||||
| */ | ||||||||||||||
| function isPlaceholderContent(text) { | ||||||||||||||
| const normalized = String(text || '').toLowerCase().trim(); | ||||||||||||||
| // Match common placeholder patterns | ||||||||||||||
| return /^\s*[-*]?\s*\[[\sxX]\]\s*(scope|tasks?|acceptance\s*criteria?)\s+(section\s+)?missing\s+from\s+source\s+issue\.?\s*$/i.test(normalized) || | ||||||||||||||
| /section\s+missing\s+from\s+source\s+issue/i.test(normalized) || | ||||||||||||||
| /^\s*n\s*\/?\s*a\s*$/i.test(normalized) || | ||||||||||||||
|
Comment on lines
+17
to
+19
|
||||||||||||||
| return /^\s*[-*]?\s*\[[\sxX]\]\s*(scope|tasks?|acceptance\s*criteria?)\s+(section\s+)?missing\s+from\s+source\s+issue\.?\s*$/i.test(normalized) || | |
| /section\s+missing\s+from\s+source\s+issue/i.test(normalized) || | |
| /^\s*n\s*\/?\s*a\s*$/i.test(normalized) || | |
| return /^\s*[-*]?\s*\[[\sxX]\]\s*(scope|tasks?|acceptance\s*criteria?)\s+(section\s+)?missing\s+from\s+source\s+issue\.?\s*$/.test(normalized) || | |
| /section\s+missing\s+from\s+source\s+issue/.test(normalized) || | |
| /^\s*n\s*\/?\s*a\s*$/.test(normalized) || |
Copilot
AI
Dec 30, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The newly introduced helper functions (isPlaceholderContent, looksLikeSectionHeader, looksLikeReferenceLink, and stripCheckboxesFromScope) lack test coverage. These functions are exported for testing and contain significant logic for detecting placeholders and filtering content. Add unit tests to verify their behavior with various input patterns, including edge cases like markdown formatting variations, different placeholder formats, and empty/null inputs.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The PR-meta fallback placeholder for the scope section was changed to the italic
_Scope section missing from source issue._, but the PR meta manager still emits the checkbox form (- [ ] Scope section missing from source issue.from.github/scripts/agents_pr_meta_update_body.js:399). BecausehasNonPlaceholderScopeTasksAcceptanceContentcompares section text against these constants, the checkbox version is no longer recognized as a placeholder, so a PR body containing only auto-generated placeholders now looks like “real” content. That causes the verifier skip guard to treat placeholder-only PRs/issues as having valid tasks/acceptance content and proceed, reintroducing the contentless follow-up issues this change was meant to prevent.Useful? React with 👍 / 👎.