Skip to content

Add support for XML-style <cmt>comment</cmt> <comment>comment</comment> formats in refine-plan - #78

Merged
SihaoLiu merged 4 commits into
PolyArch:devfrom
Lyken17:main
Apr 13, 2026
Merged

Add support for XML-style <cmt>comment</cmt> <comment>comment</comment> formats in refine-plan#78
SihaoLiu merged 4 commits into
PolyArch:devfrom
Lyken17:main

Conversation

@Lyken17

Copy link
Copy Markdown
Contributor

Summary

Extends the refine-plan command to support three comment annotation formats instead of just CMT:/ENDCMT, making plan reviews more intuitive and flexible
for different user preferences.

New Comment Formats

  • Classic format (existing): CMT: comment ENDCMT
  • Short tag format (new): <cmt>comment</cmt>
  • Long tag format (new): <comment>comment</comment>

Key Features

  • ✅ All formats support both inline and multi-line usage
  • ✅ Formats can be mixed within the same file
  • ✅ Proper nesting detection and error reporting
  • ✅ Code block and HTML comment exclusion works for all formats
  • ✅ 100% backward compatible with existing workflows

Examples

Inline annotations:

Text before CMT: classic comment ENDCMT text after.
Text before <cmt>short tag comment</cmt> text after.
Text before <comment>long tag comment</comment> text after.
Multi-line annotations:
CMT:
Multi-line classic comment
ENDCMT
<cmt>
Multi-line short tag comment
</cmt>
<comment>
Multi-line long tag comment
</comment>
Mixed formats in one file:
## Goal Description
Update the API CMT: why not use REST? ENDCMT to support GraphQL.
## Acceptance Criteria- AC-1: <cmt>Should this be split into multiple ACs?</cmt>
- AC-2: <comment>Need to clarify the error handling requirements</comment>
Test plan
- Verify all three formats are correctly parsed by the validator
- Test inline and multi-line usage for each format
- Confirm mixed formats work in the same file
- Validate error detection for mismatched start/end markers
- Ensure code blocks and HTML comments properly exclude markers
- Run existing test suite to confirm backward compatibility
Implementation Notes
- Enhanced AWK parser with format-specific marker detection
- Added helper functions for marker length calculation and format validation
- Updated all documentation to reflect the new capabilities

Lyken17and others added 2 commits April 10, 2026 02:28
Extends comment parsing to support three formats:
- Classic: CMT:/ENDCMT (existing)
- Short tag: <cmt></cmt> (new)
- Long tag: <comment></comment> (new)
All formats support inline and multi-line usage and can be mixed within the same file. Updated documentation and error messages to be format-agnostic.
Co-Authored-By: Claude Sonnet 4 <noreply@anthropic.com>

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:79714b73d5

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment threadscripts/validate-refine-plan-io.sh Outdated
if (closest_marker == "") {
return ""
} else {
return closest_marker ":" closest_pos

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Return marker metadata in an unambiguous format

find_comment_markers concatenates the marker and position as marker:pos, but callers parse it with split(..., ":"); this breaks for the legacy CMT: marker because the split result becomes "CMT", "", "<pos>". In scan_cmt_blocks, that leaves found_marker mismatched and marker_pos empty (0), so pos never advances and the validator loops indefinitely on inputs containing classic CMT: ... ENDCMT comments (reproducible with timeout 5s ./scripts/validate-refine-plan-io.sh --input <file>). This is a regression that hangs existing refine-plan workflows.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codex fix

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codex fix

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

…T: marker
The find_comment_markers awk function used ":" as the delimiter to return
"marker:position" pairs. Since the CMT: marker itself contains a colon,
split("CMT::1", parts, ":") would parse incorrectly, producing
found_marker="CMT" instead of "CMT:" and an empty marker_pos. This caused
pos to never advance, resulting in an infinite loop that hung the CI for
nearly 5 hours.
Switch the internal delimiter from ":" to "|" which does not appear in any
comment marker string.
The PR renamed CMT-specific terminology to generic "comment" terminology
in both refine-plan.md and validate-refine-plan-io.sh, but the test
assertions in test-refine-plan.sh still referenced the old text. Update
all 9 affected assertions to match the current documentation and error
messages.
@SihaoLiu
SihaoLiu merged commit 3bef3ef into PolyArch:devApr 13, 2026
4 checks passed
@SihaoLiuSihaoLiu mentioned this pull request Apr 21, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Lyken17@SihaoLiu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Add support for XML-style <cmt>comment</cmt> <comment>comment</comment> formats in refine-plan by Lyken17 · Pull Request #78 · PolyArch/humanize · GitHub
Skip to content

Add support for XML-style <cmt>comment</cmt> <comment>comment</comment> formats in refine-plan - #78

Merged
SihaoLiu merged 4 commits into
PolyArch:devfrom
Lyken17:main
Apr 13, 2026
Merged

Add support for XML-style <cmt>comment</cmt> <comment>comment</comment> formats in refine-plan#78
SihaoLiu merged 4 commits into
PolyArch:devfrom
Lyken17:main

Conversation

@Lyken17

Copy link
Copy Markdown
Contributor

Summary

Extends the refine-plan command to support three comment annotation formats instead of just CMT:/ENDCMT, making plan reviews more intuitive and flexible
for different user preferences.

New Comment Formats

  • Classic format (existing): CMT: comment ENDCMT
  • Short tag format (new): <cmt>comment</cmt>
  • Long tag format (new): <comment>comment</comment>

Key Features

  • ✅ All formats support both inline and multi-line usage
  • ✅ Formats can be mixed within the same file
  • ✅ Proper nesting detection and error reporting
  • ✅ Code block and HTML comment exclusion works for all formats
  • ✅ 100% backward compatible with existing workflows

Examples

Inline annotations:

Text before CMT: classic comment ENDCMT text after.
Text before <cmt>short tag comment</cmt> text after.
Text before <comment>long tag comment</comment> text after.
Multi-line annotations:
CMT:
Multi-line classic comment
ENDCMT
<cmt>
Multi-line short tag comment
</cmt>
<comment>
Multi-line long tag comment
</comment>
Mixed formats in one file:
## Goal Description
Update the API CMT: why not use REST? ENDCMT to support GraphQL.
## Acceptance Criteria- AC-1: <cmt>Should this be split into multiple ACs?</cmt>
- AC-2: <comment>Need to clarify the error handling requirements</comment>
Test plan
- Verify all three formats are correctly parsed by the validator
- Test inline and multi-line usage for each format
- Confirm mixed formats work in the same file
- Validate error detection for mismatched start/end markers
- Ensure code blocks and HTML comments properly exclude markers
- Run existing test suite to confirm backward compatibility
Implementation Notes
- Enhanced AWK parser with format-specific marker detection
- Added helper functions for marker length calculation and format validation
- Updated all documentation to reflect the new capabilities

Lyken17and others added 2 commits April 10, 2026 02:28
Extends comment parsing to support three formats:
- Classic: CMT:/ENDCMT (existing)
- Short tag: <cmt></cmt> (new)
- Long tag: <comment></comment> (new)
All formats support inline and multi-line usage and can be mixed within the same file. Updated documentation and error messages to be format-agnostic.
Co-Authored-By: Claude Sonnet 4 <noreply@anthropic.com>

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:79714b73d5

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment threadscripts/validate-refine-plan-io.sh Outdated
if (closest_marker == "") {
return ""
} else {
return closest_marker ":" closest_pos

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Return marker metadata in an unambiguous format

find_comment_markers concatenates the marker and position as marker:pos, but callers parse it with split(..., ":"); this breaks for the legacy CMT: marker because the split result becomes "CMT", "", "<pos>". In scan_cmt_blocks, that leaves found_marker mismatched and marker_pos empty (0), so pos never advances and the validator loops indefinitely on inputs containing classic CMT: ... ENDCMT comments (reproducible with timeout 5s ./scripts/validate-refine-plan-io.sh --input <file>). This is a regression that hangs existing refine-plan workflows.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codex fix

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codex fix

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

…T: marker
The find_comment_markers awk function used ":" as the delimiter to return
"marker:position" pairs. Since the CMT: marker itself contains a colon,
split("CMT::1", parts, ":") would parse incorrectly, producing
found_marker="CMT" instead of "CMT:" and an empty marker_pos. This caused
pos to never advance, resulting in an infinite loop that hung the CI for
nearly 5 hours.
Switch the internal delimiter from ":" to "|" which does not appear in any
comment marker string.
The PR renamed CMT-specific terminology to generic "comment" terminology
in both refine-plan.md and validate-refine-plan-io.sh, but the test
assertions in test-refine-plan.sh still referenced the old text. Update
all 9 affected assertions to match the current documentation and error
messages.
@SihaoLiu
SihaoLiu merged commit 3bef3ef into PolyArch:devApr 13, 2026
4 checks passed
@SihaoLiuSihaoLiu mentioned this pull request Apr 21, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Lyken17@SihaoLiu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add support for XML-style <cmt>comment</cmt> <comment>comment</comment> formats in refine-plan by Lyken17 · Pull Request #78 · PolyArch/humanize · GitHub
Skip to content

Add support for XML-style <cmt>comment</cmt> <comment>comment</comment> formats in refine-plan - #78

Merged
SihaoLiu merged 4 commits into
PolyArch:devfrom
Lyken17:main
Apr 13, 2026
Merged

Add support for XML-style <cmt>comment</cmt> <comment>comment</comment> formats in refine-plan#78
SihaoLiu merged 4 commits into
PolyArch:devfrom
Lyken17:main

Conversation

@Lyken17

Copy link
Copy Markdown
Contributor

Summary

Extends the refine-plan command to support three comment annotation formats instead of just CMT:/ENDCMT, making plan reviews more intuitive and flexible
for different user preferences.

New Comment Formats

  • Classic format (existing): CMT: comment ENDCMT
  • Short tag format (new): <cmt>comment</cmt>
  • Long tag format (new): <comment>comment</comment>

Key Features

  • ✅ All formats support both inline and multi-line usage
  • ✅ Formats can be mixed within the same file
  • ✅ Proper nesting detection and error reporting
  • ✅ Code block and HTML comment exclusion works for all formats
  • ✅ 100% backward compatible with existing workflows

Examples

Inline annotations:

Text before CMT: classic comment ENDCMT text after.
Text before <cmt>short tag comment</cmt> text after.
Text before <comment>long tag comment</comment> text after.
Multi-line annotations:
CMT:
Multi-line classic comment
ENDCMT
<cmt>
Multi-line short tag comment
</cmt>
<comment>
Multi-line long tag comment
</comment>
Mixed formats in one file:
## Goal Description
Update the API CMT: why not use REST? ENDCMT to support GraphQL.
## Acceptance Criteria- AC-1: <cmt>Should this be split into multiple ACs?</cmt>
- AC-2: <comment>Need to clarify the error handling requirements</comment>
Test plan
- Verify all three formats are correctly parsed by the validator
- Test inline and multi-line usage for each format
- Confirm mixed formats work in the same file
- Validate error detection for mismatched start/end markers
- Ensure code blocks and HTML comments properly exclude markers
- Run existing test suite to confirm backward compatibility
Implementation Notes
- Enhanced AWK parser with format-specific marker detection
- Added helper functions for marker length calculation and format validation
- Updated all documentation to reflect the new capabilities

Lyken17and others added 2 commits April 10, 2026 02:28
Extends comment parsing to support three formats:
- Classic: CMT:/ENDCMT (existing)
- Short tag: <cmt></cmt> (new)
- Long tag: <comment></comment> (new)
All formats support inline and multi-line usage and can be mixed within the same file. Updated documentation and error messages to be format-agnostic.
Co-Authored-By: Claude Sonnet 4 <noreply@anthropic.com>

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:79714b73d5

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment threadscripts/validate-refine-plan-io.sh Outdated
if (closest_marker == "") {
return ""
} else {
return closest_marker ":" closest_pos

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Return marker metadata in an unambiguous format

find_comment_markers concatenates the marker and position as marker:pos, but callers parse it with split(..., ":"); this breaks for the legacy CMT: marker because the split result becomes "CMT", "", "<pos>". In scan_cmt_blocks, that leaves found_marker mismatched and marker_pos empty (0), so pos never advances and the validator loops indefinitely on inputs containing classic CMT: ... ENDCMT comments (reproducible with timeout 5s ./scripts/validate-refine-plan-io.sh --input <file>). This is a regression that hangs existing refine-plan workflows.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codex fix

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codex fix

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

…T: marker
The find_comment_markers awk function used ":" as the delimiter to return
"marker:position" pairs. Since the CMT: marker itself contains a colon,
split("CMT::1", parts, ":") would parse incorrectly, producing
found_marker="CMT" instead of "CMT:" and an empty marker_pos. This caused
pos to never advance, resulting in an infinite loop that hung the CI for
nearly 5 hours.
Switch the internal delimiter from ":" to "|" which does not appear in any
comment marker string.
The PR renamed CMT-specific terminology to generic "comment" terminology
in both refine-plan.md and validate-refine-plan-io.sh, but the test
assertions in test-refine-plan.sh still referenced the old text. Update
all 9 affected assertions to match the current documentation and error
messages.
@SihaoLiu
SihaoLiu merged commit 3bef3ef into PolyArch:devApr 13, 2026
4 checks passed
@SihaoLiuSihaoLiu mentioned this pull request Apr 21, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Lyken17@SihaoLiu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add support for XML-style <cmt>comment</cmt> <comment>comment</comment> formats in refine-plan by Lyken17 · Pull Request #78 · PolyArch/humanize · GitHub
Skip to content

Add support for XML-style <cmt>comment</cmt> <comment>comment</comment> formats in refine-plan - #78

Merged
SihaoLiu merged 4 commits into
PolyArch:devfrom
Lyken17:main
Apr 13, 2026
Merged

Add support for XML-style <cmt>comment</cmt> <comment>comment</comment> formats in refine-plan#78
SihaoLiu merged 4 commits into
PolyArch:devfrom
Lyken17:main

Conversation

@Lyken17

Copy link
Copy Markdown
Contributor

Summary

Extends the refine-plan command to support three comment annotation formats instead of just CMT:/ENDCMT, making plan reviews more intuitive and flexible
for different user preferences.

New Comment Formats

  • Classic format (existing): CMT: comment ENDCMT
  • Short tag format (new): <cmt>comment</cmt>
  • Long tag format (new): <comment>comment</comment>

Key Features

  • ✅ All formats support both inline and multi-line usage
  • ✅ Formats can be mixed within the same file
  • ✅ Proper nesting detection and error reporting
  • ✅ Code block and HTML comment exclusion works for all formats
  • ✅ 100% backward compatible with existing workflows

Examples

Inline annotations:

Text before CMT: classic comment ENDCMT text after.
Text before <cmt>short tag comment</cmt> text after.
Text before <comment>long tag comment</comment> text after.
Multi-line annotations:
CMT:
Multi-line classic comment
ENDCMT
<cmt>
Multi-line short tag comment
</cmt>
<comment>
Multi-line long tag comment
</comment>
Mixed formats in one file:
## Goal Description
Update the API CMT: why not use REST? ENDCMT to support GraphQL.
## Acceptance Criteria- AC-1: <cmt>Should this be split into multiple ACs?</cmt>
- AC-2: <comment>Need to clarify the error handling requirements</comment>
Test plan
- Verify all three formats are correctly parsed by the validator
- Test inline and multi-line usage for each format
- Confirm mixed formats work in the same file
- Validate error detection for mismatched start/end markers
- Ensure code blocks and HTML comments properly exclude markers
- Run existing test suite to confirm backward compatibility
Implementation Notes
- Enhanced AWK parser with format-specific marker detection
- Added helper functions for marker length calculation and format validation
- Updated all documentation to reflect the new capabilities

Lyken17and others added 2 commits April 10, 2026 02:28
Extends comment parsing to support three formats:
- Classic: CMT:/ENDCMT (existing)
- Short tag: <cmt></cmt> (new)
- Long tag: <comment></comment> (new)
All formats support inline and multi-line usage and can be mixed within the same file. Updated documentation and error messages to be format-agnostic.
Co-Authored-By: Claude Sonnet 4 <noreply@anthropic.com>

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:79714b73d5

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment threadscripts/validate-refine-plan-io.sh Outdated
if (closest_marker == "") {
return ""
} else {
return closest_marker ":" closest_pos

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Return marker metadata in an unambiguous format

find_comment_markers concatenates the marker and position as marker:pos, but callers parse it with split(..., ":"); this breaks for the legacy CMT: marker because the split result becomes "CMT", "", "<pos>". In scan_cmt_blocks, that leaves found_marker mismatched and marker_pos empty (0), so pos never advances and the validator loops indefinitely on inputs containing classic CMT: ... ENDCMT comments (reproducible with timeout 5s ./scripts/validate-refine-plan-io.sh --input <file>). This is a regression that hangs existing refine-plan workflows.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codex fix

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codex fix

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

…T: marker
The find_comment_markers awk function used ":" as the delimiter to return
"marker:position" pairs. Since the CMT: marker itself contains a colon,
split("CMT::1", parts, ":") would parse incorrectly, producing
found_marker="CMT" instead of "CMT:" and an empty marker_pos. This caused
pos to never advance, resulting in an infinite loop that hung the CI for
nearly 5 hours.
Switch the internal delimiter from ":" to "|" which does not appear in any
comment marker string.
The PR renamed CMT-specific terminology to generic "comment" terminology
in both refine-plan.md and validate-refine-plan-io.sh, but the test
assertions in test-refine-plan.sh still referenced the old text. Update
all 9 affected assertions to match the current documentation and error
messages.
@SihaoLiu
SihaoLiu merged commit 3bef3ef into PolyArch:devApr 13, 2026
4 checks passed
@SihaoLiuSihaoLiu mentioned this pull request Apr 21, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Lyken17@SihaoLiu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Add support for XML-style <cmt>comment</cmt> <comment>comment</comment> formats in refine-plan by Lyken17 · Pull Request #78 · PolyArch/humanize · GitHub
Skip to content

Add support for XML-style <cmt>comment</cmt> <comment>comment</comment> formats in refine-plan - #78

Merged
SihaoLiu merged 4 commits into
PolyArch:devfrom
Lyken17:main
Apr 13, 2026
Merged

Add support for XML-style <cmt>comment</cmt> <comment>comment</comment> formats in refine-plan#78
SihaoLiu merged 4 commits into
PolyArch:devfrom
Lyken17:main

Conversation

@Lyken17

Copy link
Copy Markdown
Contributor

Summary

Extends the refine-plan command to support three comment annotation formats instead of just CMT:/ENDCMT, making plan reviews more intuitive and flexible
for different user preferences.

New Comment Formats

  • Classic format (existing): CMT: comment ENDCMT
  • Short tag format (new): <cmt>comment</cmt>
  • Long tag format (new): <comment>comment</comment>

Key Features

  • ✅ All formats support both inline and multi-line usage
  • ✅ Formats can be mixed within the same file
  • ✅ Proper nesting detection and error reporting
  • ✅ Code block and HTML comment exclusion works for all formats
  • ✅ 100% backward compatible with existing workflows

Examples

Inline annotations:

Text before CMT: classic comment ENDCMT text after.
Text before <cmt>short tag comment</cmt> text after.
Text before <comment>long tag comment</comment> text after.
Multi-line annotations:
CMT:
Multi-line classic comment
ENDCMT
<cmt>
Multi-line short tag comment
</cmt>
<comment>
Multi-line long tag comment
</comment>
Mixed formats in one file:
## Goal Description
Update the API CMT: why not use REST? ENDCMT to support GraphQL.
## Acceptance Criteria- AC-1: <cmt>Should this be split into multiple ACs?</cmt>
- AC-2: <comment>Need to clarify the error handling requirements</comment>
Test plan
- Verify all three formats are correctly parsed by the validator
- Test inline and multi-line usage for each format
- Confirm mixed formats work in the same file
- Validate error detection for mismatched start/end markers
- Ensure code blocks and HTML comments properly exclude markers
- Run existing test suite to confirm backward compatibility
Implementation Notes
- Enhanced AWK parser with format-specific marker detection
- Added helper functions for marker length calculation and format validation
- Updated all documentation to reflect the new capabilities

Lyken17and others added 2 commits April 10, 2026 02:28
Extends comment parsing to support three formats:
- Classic: CMT:/ENDCMT (existing)
- Short tag: <cmt></cmt> (new)
- Long tag: <comment></comment> (new)
All formats support inline and multi-line usage and can be mixed within the same file. Updated documentation and error messages to be format-agnostic.
Co-Authored-By: Claude Sonnet 4 <noreply@anthropic.com>

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:79714b73d5

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment threadscripts/validate-refine-plan-io.sh Outdated
if (closest_marker == "") {
return ""
} else {
return closest_marker ":" closest_pos

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Return marker metadata in an unambiguous format

find_comment_markers concatenates the marker and position as marker:pos, but callers parse it with split(..., ":"); this breaks for the legacy CMT: marker because the split result becomes "CMT", "", "<pos>". In scan_cmt_blocks, that leaves found_marker mismatched and marker_pos empty (0), so pos never advances and the validator loops indefinitely on inputs containing classic CMT: ... ENDCMT comments (reproducible with timeout 5s ./scripts/validate-refine-plan-io.sh --input <file>). This is a regression that hangs existing refine-plan workflows.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codex fix

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codex fix

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

…T: marker
The find_comment_markers awk function used ":" as the delimiter to return
"marker:position" pairs. Since the CMT: marker itself contains a colon,
split("CMT::1", parts, ":") would parse incorrectly, producing
found_marker="CMT" instead of "CMT:" and an empty marker_pos. This caused
pos to never advance, resulting in an infinite loop that hung the CI for
nearly 5 hours.
Switch the internal delimiter from ":" to "|" which does not appear in any
comment marker string.
The PR renamed CMT-specific terminology to generic "comment" terminology
in both refine-plan.md and validate-refine-plan-io.sh, but the test
assertions in test-refine-plan.sh still referenced the old text. Update
all 9 affected assertions to match the current documentation and error
messages.
@SihaoLiu
SihaoLiu merged commit 3bef3ef into PolyArch:devApr 13, 2026
4 checks passed
@SihaoLiuSihaoLiu mentioned this pull request Apr 21, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Lyken17@SihaoLiu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add support for XML-style <cmt>comment</cmt> <comment>comment</comment> formats in refine-plan by Lyken17 · Pull Request #78 · PolyArch/humanize · GitHub
Skip to content

Add support for XML-style <cmt>comment</cmt> <comment>comment</comment> formats in refine-plan - #78

Merged
SihaoLiu merged 4 commits into
PolyArch:devfrom
Lyken17:main
Apr 13, 2026
Merged

Add support for XML-style <cmt>comment</cmt> <comment>comment</comment> formats in refine-plan#78
SihaoLiu merged 4 commits into
PolyArch:devfrom
Lyken17:main

Conversation

@Lyken17

Copy link
Copy Markdown
Contributor

Summary

Extends the refine-plan command to support three comment annotation formats instead of just CMT:/ENDCMT, making plan reviews more intuitive and flexible
for different user preferences.

New Comment Formats

  • Classic format (existing): CMT: comment ENDCMT
  • Short tag format (new): <cmt>comment</cmt>
  • Long tag format (new): <comment>comment</comment>

Key Features

  • ✅ All formats support both inline and multi-line usage
  • ✅ Formats can be mixed within the same file
  • ✅ Proper nesting detection and error reporting
  • ✅ Code block and HTML comment exclusion works for all formats
  • ✅ 100% backward compatible with existing workflows

Examples

Inline annotations:

Text before CMT: classic comment ENDCMT text after.
Text before <cmt>short tag comment</cmt> text after.
Text before <comment>long tag comment</comment> text after.
Multi-line annotations:
CMT:
Multi-line classic comment
ENDCMT
<cmt>
Multi-line short tag comment
</cmt>
<comment>
Multi-line long tag comment
</comment>
Mixed formats in one file:
## Goal Description
Update the API CMT: why not use REST? ENDCMT to support GraphQL.
## Acceptance Criteria- AC-1: <cmt>Should this be split into multiple ACs?</cmt>
- AC-2: <comment>Need to clarify the error handling requirements</comment>
Test plan
- Verify all three formats are correctly parsed by the validator
- Test inline and multi-line usage for each format
- Confirm mixed formats work in the same file
- Validate error detection for mismatched start/end markers
- Ensure code blocks and HTML comments properly exclude markers
- Run existing test suite to confirm backward compatibility
Implementation Notes
- Enhanced AWK parser with format-specific marker detection
- Added helper functions for marker length calculation and format validation
- Updated all documentation to reflect the new capabilities

Lyken17and others added 2 commits April 10, 2026 02:28
Extends comment parsing to support three formats:
- Classic: CMT:/ENDCMT (existing)
- Short tag: <cmt></cmt> (new)
- Long tag: <comment></comment> (new)
All formats support inline and multi-line usage and can be mixed within the same file. Updated documentation and error messages to be format-agnostic.
Co-Authored-By: Claude Sonnet 4 <noreply@anthropic.com>

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:79714b73d5

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment threadscripts/validate-refine-plan-io.sh Outdated
if (closest_marker == "") {
return ""
} else {
return closest_marker ":" closest_pos

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Return marker metadata in an unambiguous format

find_comment_markers concatenates the marker and position as marker:pos, but callers parse it with split(..., ":"); this breaks for the legacy CMT: marker because the split result becomes "CMT", "", "<pos>". In scan_cmt_blocks, that leaves found_marker mismatched and marker_pos empty (0), so pos never advances and the validator loops indefinitely on inputs containing classic CMT: ... ENDCMT comments (reproducible with timeout 5s ./scripts/validate-refine-plan-io.sh --input <file>). This is a regression that hangs existing refine-plan workflows.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codex fix

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codex fix

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

…T: marker
The find_comment_markers awk function used ":" as the delimiter to return
"marker:position" pairs. Since the CMT: marker itself contains a colon,
split("CMT::1", parts, ":") would parse incorrectly, producing
found_marker="CMT" instead of "CMT:" and an empty marker_pos. This caused
pos to never advance, resulting in an infinite loop that hung the CI for
nearly 5 hours.
Switch the internal delimiter from ":" to "|" which does not appear in any
comment marker string.
The PR renamed CMT-specific terminology to generic "comment" terminology
in both refine-plan.md and validate-refine-plan-io.sh, but the test
assertions in test-refine-plan.sh still referenced the old text. Update
all 9 affected assertions to match the current documentation and error
messages.
@SihaoLiu
SihaoLiu merged commit 3bef3ef into PolyArch:devApr 13, 2026
4 checks passed
@SihaoLiuSihaoLiu mentioned this pull request Apr 21, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Lyken17@SihaoLiu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); Add support for XML-style <cmt>comment</cmt> <comment>comment</comment> formats in refine-plan by Lyken17 · Pull Request #78 · PolyArch/humanize · GitHub
Skip to content

Add support for XML-style <cmt>comment</cmt> <comment>comment</comment> formats in refine-plan - #78

Merged
SihaoLiu merged 4 commits into
PolyArch:devfrom
Lyken17:main
Apr 13, 2026
Merged

Add support for XML-style <cmt>comment</cmt> <comment>comment</comment> formats in refine-plan#78
SihaoLiu merged 4 commits into
PolyArch:devfrom
Lyken17:main

Conversation

@Lyken17

Copy link
Copy Markdown
Contributor

Summary

Extends the refine-plan command to support three comment annotation formats instead of just CMT:/ENDCMT, making plan reviews more intuitive and flexible
for different user preferences.

New Comment Formats

  • Classic format (existing): CMT: comment ENDCMT
  • Short tag format (new): <cmt>comment</cmt>
  • Long tag format (new): <comment>comment</comment>

Key Features

  • ✅ All formats support both inline and multi-line usage
  • ✅ Formats can be mixed within the same file
  • ✅ Proper nesting detection and error reporting
  • ✅ Code block and HTML comment exclusion works for all formats
  • ✅ 100% backward compatible with existing workflows

Examples

Inline annotations:

Text before CMT: classic comment ENDCMT text after.
Text before <cmt>short tag comment</cmt> text after.
Text before <comment>long tag comment</comment> text after.
Multi-line annotations:
CMT:
Multi-line classic comment
ENDCMT
<cmt>
Multi-line short tag comment
</cmt>
<comment>
Multi-line long tag comment
</comment>
Mixed formats in one file:
## Goal Description
Update the API CMT: why not use REST? ENDCMT to support GraphQL.
## Acceptance Criteria- AC-1: <cmt>Should this be split into multiple ACs?</cmt>
- AC-2: <comment>Need to clarify the error handling requirements</comment>
Test plan
- Verify all three formats are correctly parsed by the validator
- Test inline and multi-line usage for each format
- Confirm mixed formats work in the same file
- Validate error detection for mismatched start/end markers
- Ensure code blocks and HTML comments properly exclude markers
- Run existing test suite to confirm backward compatibility
Implementation Notes
- Enhanced AWK parser with format-specific marker detection
- Added helper functions for marker length calculation and format validation
- Updated all documentation to reflect the new capabilities

Lyken17and others added 2 commits April 10, 2026 02:28
Extends comment parsing to support three formats:
- Classic: CMT:/ENDCMT (existing)
- Short tag: <cmt></cmt> (new)
- Long tag: <comment></comment> (new)
All formats support inline and multi-line usage and can be mixed within the same file. Updated documentation and error messages to be format-agnostic.
Co-Authored-By: Claude Sonnet 4 <noreply@anthropic.com>

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:79714b73d5

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment threadscripts/validate-refine-plan-io.sh Outdated
if (closest_marker == "") {
return ""
} else {
return closest_marker ":" closest_pos

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Return marker metadata in an unambiguous format

find_comment_markers concatenates the marker and position as marker:pos, but callers parse it with split(..., ":"); this breaks for the legacy CMT: marker because the split result becomes "CMT", "", "<pos>". In scan_cmt_blocks, that leaves found_marker mismatched and marker_pos empty (0), so pos never advances and the validator loops indefinitely on inputs containing classic CMT: ... ENDCMT comments (reproducible with timeout 5s ./scripts/validate-refine-plan-io.sh --input <file>). This is a regression that hangs existing refine-plan workflows.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codex fix

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codex fix

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

…T: marker
The find_comment_markers awk function used ":" as the delimiter to return
"marker:position" pairs. Since the CMT: marker itself contains a colon,
split("CMT::1", parts, ":") would parse incorrectly, producing
found_marker="CMT" instead of "CMT:" and an empty marker_pos. This caused
pos to never advance, resulting in an infinite loop that hung the CI for
nearly 5 hours.
Switch the internal delimiter from ":" to "|" which does not appear in any
comment marker string.
The PR renamed CMT-specific terminology to generic "comment" terminology
in both refine-plan.md and validate-refine-plan-io.sh, but the test
assertions in test-refine-plan.sh still referenced the old text. Update
all 9 affected assertions to match the current documentation and error
messages.
@SihaoLiu
SihaoLiu merged commit 3bef3ef into PolyArch:devApr 13, 2026
4 checks passed
@SihaoLiuSihaoLiu mentioned this pull request Apr 21, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Lyken17@SihaoLiu